Steem Dunk is now Open Source - Automated Curation Platform - Hosted version is FREE for EVERYONE

in utopian-io •  last year

Steem Dunk is an automated curation platform. Being built from the ground up for ease-of-use and reliability, it is now open source as of now with the support of Utopian to keep the servers running. This means the cloud hosted version will now be free to use for everyone! ...Or you can self host the service for yourself if you'd like.

Of course we don't have an infinite amount of resources, so all users will receive the bronze plan for free upon signing up, which allows for curating up to 20 authors, if you have a need for more authors, ask us in Discord. Upgrading is still possible to further support the project.

The hosted version will always be available at
The service account is @steemdunk

Setting up a self hosted version

Still feeling adventurous? Keep on reading...

We will cover how to setup the service from cloning the repository to automatically upvoting content. It is assumed you are familiar with the command line and git.


  • Node.js (v8.0 or greater)
  • Arangodb (v3.2 or greater)

1. Get the source

First things first, we need to clone the git repository into a subdirectory. The subdirectory is important as the configuration will be held in the parent directory to make updates easy. Make sure you are currently in an empty directory.

$ mkdir test
$ git clone server
$ cd server

2. Install the dependencies

Install all the dependencies with NPM. This may take a while to complete, so give it time.

$ npm install

3. Build the project

We assume you have npx available on the command line. If you do not then install gulp globally with npm i -g gulp and don't type the npx part below.

$ npx gulp build


4. Configuring everything

The server has many configuration options, ranging from the Steem network to the email server used. Steemdunk has all the options neatly categorized in a YAML file for ease of setting up.

4.1 The configuration file

By default, config.yml will be read on startup of the server. By default the official Steem network is configured for use. For testing purposes, we will be using a test network. Copy the config.default.yaml to the parent directory as config.yml.

4.2 Let's setup the network

For all intent and purposes, let's get things running as quickly as possible without polluting the main network. We'll be using the live Steem network. You are free to setup a test network for testing upvotes, don't pollute the main blockchain with spam posts for testing!

@almost-digital hosts a network on for testing purposes. Use this if you want to make test posts for upvoting!

Default configuration options:

  node: ''
  address_prefix: 'STM'
  chain_id: '0000000000000000000000000000000000000000000000000000000000000000'

4.3 Setup Arangodb

Make sure Arangodb has a fresh database and new user specifically to run Steemdunk.

Here are the sample configuration options:

  host: localhost:8529
  use_ssl: false
  cert_path: ''
  user: dev
  password: dev
  database: sv_dev

The options are self explanatory, it provides the necessary information for Steemdunk to make a successful connection to the database. The database is what stores all the state for the server to disk.

Extra security

Optionally, the database can run over a secure connection for more security. Simply set use_ssl to true and make sure to point the cert_path to your Arangodb certificate location, otherwise all connections to the database will fail.

4.4 Optional step - setup email

Email is used to send verification codes to users to validate their Steemdunk account. For your self hosted setup, this is unnecessary and can remain disabled. By default, when this feature is disabled, all accounts will have their email set as verified automatically.

Here are the sample configuration options:

  enabled: false
  port: 465
  secure: true
  pass: 12345678

4.5 Setup the HTTP server

Steemdunk does not support HTTP, rather it forces the use of HTTPS. You need to have a certificate and private key, in PEM format, ready for use. The Steemdunk official website uses a certificate and key generated by Cloudflare, configured in strict SSL mode for high security.

Configuration options:

    port: 8443
    ssl_cert_path: 'cert.pem' # Path to server certificate
    ssl_key_path: 'key.pem' # Path to private certificate key

By default, only localhost will accept connections. To allow connections from everywhere set the bind host to instead of the default

5. Up and running

At this point, everything is configured and ready to go.
In your terminal, run:

$ node server/out/index.js

The database will be created and a root user will be created, the username can be changed by going into the database and editing the document. A default password will be given to you.

Once the server is running, go to https://localhost:8443. Log into the server with your credentials and change your password to something secret under the profile page.

Sign in:

Profile page:

Admin configuration

Under the admin page, configure your Steem account that will be doing the voting and make sure to use the private posting key otherwise it will not work.

Add authors on the homepage

Add any authors you wish to the author curation list. These authors will be automatically upvoting any author you wish!

Here's a live sample taken from my personal account showing Steemdunk in action:

Open Source Contribution posted via

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Great service by @samrg472
I have been using @steemdunk since its inception and is highly recommended.

Good alternative for Steemvoter and Streemian.

s great, i like the fact that we can run a server of it.

It's been helping me too!

Thank you for the contribution. It has been approved.


Congratulations! This post has been upvoted from the communal account, @minnowsupport, by samrg472 from the Minnow Support Project. It's a witness project run by aggroed, ausbitbank, teamsteem, theprophet0, someguy123, neoxian, followbtcnews/crimsonclad, and netuoso. The goal is to help Steemit grow by supporting Minnows and creating a social network. Please find us in the Peace, Abundance, and Liberty Network (PALnet) Discord Channel. It's a completely public and open space to all members of the Steemit community who voluntarily choose to be there.

Fantastic service thank you!

Cool... I love learning foreign languages!

But seriously, really stunning work here, and I have already seen great results from using the program.

Awesome! :)

Very informative love it going to give this a shot.Thanks a lot for the tutorial

Excellent write-up! You are the man, Sam!


This post has been ranked within the top 80 most undervalued posts in the second half of Nov 13. We estimate that this post is undervalued by $9.17 as compared to a scenario in which every voter had an equal say.

See the full rankings and details in The Daily Tribune: Nov 13 - Part II. You can also read about some of our methodology, data analysis and technical details in our initial post.

If you are the author and would prefer not to receive these comments, simply reply "Stop" to this comment.

good post

Thanks for this service!

This is a great service!

Awesome!!! The service has definitely been helping me!

Hey @samrg472 I am @utopian-io. I have just super-voted you at 47% Power!


  • Utopian has detected 12 bot votes. I am the only bot you should love!!


  • I am a bot...I love developers... <3
  • Much more informative than others in this category. Good job!
  • Votes on this contribution are going well. Nice!
  • You are having more votes than average for this category. Nice!
  • You have less than 500 followers. Just gave you a gift ;)
  • You have a good amount of votes on your contributions. Good job!
  • You have just unlocked 6 achievements. Yeah!
    Up-vote this comment to grow my power and help Open Source contributions like this one. Want to chat? Join me on Discord

Congratulations @samrg472!
Your post was mentioned in the hit parade in the following category:

  • Pending payout - Ranked 1 with $ 143,86

Amazing service fraind thanks....


Hay my friend it's real great concept and Content and it's a great project

viewed, voted, commented, and re-steemed ...

anyone follows me i'll follow back within a few days

Pretty wild watching this program evolve from great to astounding.

You should make it more clear what your service/app does.
So it upvotes all the posts by the specified authors? Or is there some logic to it?
And if you use the cloud version, your bot randomly upvotes user's posts at 20%?
I hope you have paid enough attention to security, given all the active keys you're about to be hosting. (apparently the keys are not hosted on their servers)
(Edited to try to be nicer.)


Frankly, if you did your research, you would realize your keys are not stored on the server. The authorization page doesn't even communicate with the server. As for clarity, yes, it is a curation platform. If you're still scared, because of your lack of ability to audit the code base, then host it yourself.


So, you expect everyone to review the code base before commenting? Then you down vote me to hide my comment? Plus you had your bot downvote me, which is an abuse of power in my viewpoint. You could have simply replied that the key is not stored on the server, alleviating my fears.
My point that you were not more clear what your application does is still valid. You should at the very least make it clear on the cloud platform.
Yes, I could review the codebase, but not everyone can.


What you previously stated came off as rude, arrogant, and a poor way to address your "concerns". Maybe you should've reviewed it or asked first before assuming how the platform is handled.

Yes I know the web platform doesn't have a landing page right now. It was launched to be functional for everyone to start using. There's still a lot to be done and the project isn't being abandoned.


Tone does not come off on the web. The worst part to me was the word "damn". I cuss way worse in person. But I just did minor edits, including removing the part about the keys that used the word "exchange", which could have possibly had negative connotations I did not intend. Is that better?
I was not abusive though, and did not deserve a downvote. Especially not a double downvote by you and your bot. If people have to walk on thin ice with everyone for fear of a down vote, this platform will never survive.

This is absolutely stunning !