$ ssh root@host
# adduser somename
# usermod -aG sudo somename
# usermod -aG dokku somename
$ ssh-copy-id -i ~/.ssh/mykey.pub somename@host
or if ssh key from digitalocean worked:
- copy root authorized key to new user's
.sshand change user/group ownership and set correct permissions
mkdir /home/somename/.ssh
cp /root/.ssh/authorized_keys /home/somename/.ssh/
chown somename:somename -R /home/somename/.ssh
chmod 700 /home/shomename/.ssh
chmod 600 /home/somename/.ssh/authorized_keysHost servername
HostName host
User somename
IdentityFile /home/someuser/.ssh/id_key
ssh servername
then exit root ssh
sudo apt update
sudo apt dist-upgrade
$ sudo apt install dokku-update
$ sudo dokku-update run
Then reboot
sudo reboot
$ sudo vim /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
PermitEmptyPasswords no
MaxAuthTries 3
X11Forwarding no
AllowTcpForwarding no
sudo systemctl restart ssh
then try to login as root, shouldn't work
Add swap (if memory low)
Helps with deploying faster if you don't need a lot of storage space
# create a 4G file
sudo fallocate -l 4G /swapfile
# secure it
sudo chown root:root /swapfile
sudo chmod 600 /swapfile
# make and enable swap
sudo mkswap /swapfile
sudo swapon /swapfile
# persist on reboot if not already present
grep -q '^/swapfile ' /etc/fstab || echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
# verify
ls -l /swapfile # should show -rw-------
swapon --show
$ echo 'PUB KEY' | sudo dokku ssh-keys:add somename
$ dokku apps:create someapp
Should be good to create dokku apps now. Set git remote to dokku instance and push branch
git remote add dokku dokku@servername:appname // use servername from ~/.ssh/config setup
git push dokku master
Add ssh private key to repo secrets Add to ci.yml
deploy:
runs-on: ubuntu-latest
needs: test-lint # DOUBLE CHECK THIS
if: github.ref == 'refs/heads/master'
steps:
- name: Cloning repo
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Push to dokku
uses: dokku/github-action@master
with:
git_remote_url: 'ssh://dokku@host/app'
ssh_private_key: ${{ secrets.SSH_PRIVATE_KEY }}