{"id":17799448,"url":"https://github.com/polettix/dokku-boot","last_synced_at":"2026-07-13T01:31:17.803Z","repository":{"id":136155873,"uuid":"70201913","full_name":"polettix/dokku-boot","owner":"polettix","description":"Bootstrap dokku in a firewalled environment","archived":false,"fork":false,"pushed_at":"2019-06-08T16:58:54.000Z","size":49,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-26T22:32:55.490Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/polettix.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-10-06T23:50:46.000Z","updated_at":"2019-06-08T16:58:55.000Z","dependencies_parsed_at":null,"dependency_job_id":"8bebfe8c-44ff-4f72-9e8a-151e52678230","html_url":"https://github.com/polettix/dokku-boot","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/polettix/dokku-boot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polettix%2Fdokku-boot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polettix%2Fdokku-boot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polettix%2Fdokku-boot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polettix%2Fdokku-boot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/polettix","download_url":"https://codeload.github.com/polettix/dokku-boot/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polettix%2Fdokku-boot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35407393,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-12T02:00:06.386Z","response_time":87,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-27T12:07:20.408Z","updated_at":"2026-07-13T01:31:17.785Z","avatar_url":"https://github.com/polettix.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Get Me Started, Fast!\n\nIt can be very fast...\n\n1. Copy file `sample-env.sh` to `env.sh`\n\n2. Edit file `env.sh` and put the right values. It's assuming that you\n   want to spin up one instance in [Digital Ocean][] and manage DNS\n   wildcard with ClouDNS.\n\n3. Run:\n\n      ./dokku-boomote.sh\n\n   and take note of the resulting IP, populating environment variable\n   `DOKKU_IP`\n\nThere you go, your personal PaaS is waiting for you at `$DOKKU_IP`!\n\n# What now?\n\nWe will suppose that your VPS has FQDN `foobar.example.com` (which you\nsomehow set in the DNS).\n\nIn your terminal:\n\n    $ DOKKU_HOST='foobar.example.com'\n\n    # Create application in dokku\n    $ ssh \"dokku@$DOKKU_HOST\" apps:create sample-mojo\n    # ... probably some stuff that has to do with SSH, just say yes\n    Creating sample-mojo... done\n\n    # Get something to play with\n    $ git clone https://github.com/polettix/sample-mojo.git sample-mojo\n    Cloning into 'sample-mojo'...\n    remote: Counting objects: 6, done.\n    remote: Compressing objects: 100% (4/4), done.\n    remote: Total 6 (delta 0), reused 6 (delta 0), pack-reused 0 Unpacking\n    objects: 100% (6/6), done.\n\n    $ cd sample-mojo\n\n    $ git remote add dokku \"dokku@$DOKKU_HOST:sample-mojo\"\n    \n    # Have fun!\n    $ git push --set-upstream dokku master\n    Counting objects: 6, done.\n    # ... several lines of automated deployment...\n    =====\u003e Application deployed:\n           http://sample-mojo.foobar.example.com\n\n    To dokku@foobar.example.com:sample-mojo\n    * [new branch]      master -\u003e master\n    Branch master set up to track remote branch master from dokku.\n\n    # Now enjoy your new application, use URL provided after line\n    #\n    # =====\u003e Application deployed:\n    #\n    # above\n    $ curl http://sample-mojo.foobar.example.com\n    Hello, World!\n\n# Shameless Plug\n\nIf you happen to use [Digital Ocean][] and also [ClouDNS][] customer, there's\neven a quicker route to spin up machines at will. Note that these two services\nare not for free, although you can spend less than about 5$ to get started (or\nless, depending on what you already have).\n\nThere's some one-time setup to be done:\n\n1. subscribe to [Digital Ocean][] and generate an API access token ([see the\n   FAQ][do-api-faq]). You can use [my referral link][do-referral] to get\n   started with $10 credit (as of November 2016 at least).\n   \n2. define at least one SSH Key in [Digital Ocean][], [read here][do-ssh-keys]\n   if you don't know how to do it;\n\n3. subscribe to [ClouDNS][] and generate API credentials (this requires at\n   least [premium][cloudns-premium] level, again you're welcome to use [my\n   referral link][cloudns-referral]). To generate the API credentials you can\n   [read this article][cloudns-api-help];\n\n4. set up management of a domain in [ClouDNS][], we will assume it's\n   `paas.example.com`. They usually have a [promotions][cloudns-promotions]\n   page where you can get a domain for as low as about $3, but if you already\n   have something (e.g. a delegation from a friend) it's OK too;\n\n5. put the relevant credentials in file `env.sh` (in your *current* directory,\n   whatever it is). I find it useful to create \"sub-users\" and restrict the\n   amount of freedom these API users have. Example (substitute where you see\n   fit):\n\n        : ${DO_TOKEN:='YOUR-DIGITAL-OCEAN-TOKEN'}\n        : ${DO_SSH_KEY_ID:='YOUR-DIGITAL-OCEAN-SSH-KEY-ID'}\n        : ${CLOUDNS_AUTH:='sub-auth-user=CLOUDNS-SUB-USER\u0026auth-password=CLOUDNS-SUB-PASS'}\n        : ${VM_PROVIDER:='digital-ocean'}\n        : ${DNS_PROVIDER:='cloudns'}\n        export DO_TOKEN DO_SSH_KEY_ID CLOUDNS_AUTH VM_PROVIDER DNS_PROVIDE\n\nPreparation phase is over, now you're read to spin up as many VMs as you see\nfit.\n\n    shell$ /path/to/dokku-boomote.sh example.com paas\n    # ... 6-7 minutes and a few logs later you read this:\n    *.paas.example.com =\u003e W.X.Y.Z\n\nand so on. Sky (well, your wallet actually) is the limit!\n\n# I'm Ready For Some Details Now!\n\nDo you know [Dokku][]? They dub it as *The smallest PaaS implementation\nyou've ever seen*, and well... it really is.\n\nIt's easy to install. But but... this only gets you started. I wanted\nsomething that:\n\n- would be easy to run in a newly spawned VPS (e.g. in [Digital Ocean][])\n- would also care to set up reasonable firewalling rules:\n    - leave only ports `22`, `80` and `443` open\n    - put sane restrictions on forwarding and output\n- last, would install a few plugins I want to have around:\n    - [letsencrypt][] to automate handling of *real* TLS certificates from\n      [Let's Encrypt][]\n    - [redis][]\n    - [postgres][]\n\nThis is what `dokku-boot` is about.\n\nIf you want to customize it, you can modify/add scripts inside directory\n`dokku-boot.d`. To regenerate the perl script that does the magic, you\nwill have to install [deployable][] and run `make`.\n\n\n[Dokku]: http://dokku.viewdocs.io/dokku/\n[Digital Ocean]: https://www.digitalocean.com/\n[letsencrypt]: https://github.com/dokku/dokku-letsencrypt\n[redis]: https://github.com/dokku/dokku-redis\n[postgres]: https://github.com/dokku/dokku-postgres\n[Let's Encrypt]: https://letsencrypt.org/\n[deployable]: http://repo.or.cz/deployable.git\n[ClouDNS]: https://www.cloudns.net/\n[do-api-faq]: https://www.digitalocean.com/help/api/\n[do-referral]: https://m.do.co/c/56e1ceafe14a\n[cloudns-premium]: https://www.cloudns.net/premium/\n[cloudns-referral]: http://www.cloudns.net/aff/id/84226/\n[cloudns-api-help]: https://www.cloudns.net/wiki/article/42/\n[do-ssh-keys]: https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys--2\n[cloudns-promotions]: https://www.cloudns.net/domain-pricing-list/category/promotions/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpolettix%2Fdokku-boot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpolettix%2Fdokku-boot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpolettix%2Fdokku-boot/lists"}