So I just managed to self host on digital ocean. I am a no code guy but managed to hack my way through installing and setting up n8n. However I am not too sure on the process of updating the n8n setup because I sort of followed the instructions on the guide but I keep developing issues. I also have been scared to self host as I do not have a deep background in server management. I was wondering first on the best way to do the update and avoid errors as well as advise on what else could be required other than updating n8n when new versions come out. I am hoping this is the only thing I will be doing as I really fear breaking the whole thing once its setup. Any advise on best practices and what you guys regularly do to keep the server running smooth is welcome. I have also seen heroku and the other options, which one would you suggest or am good with Digital ocean droplets. For me management and easy updating is the key
It looks like your topic is missing some important information. Could you provide the following if applicable.
- n8n version:
- Database (default: SQLite):
- n8n EXECUTIONS_PROCESS setting (default: own, main):
- Running n8n via (Docker, npm, n8n cloud, desktop app):
- Operating system:
Hi @Keep_Innovations, first of all congrats on setting up n8n! This is no easy feat when you’re new to system administration.
I’ve heard good things about Digital Ocean, so I think this is a solid choice.
I was wondering first on the best way to do the update and avoid errors as well as advise on what else could be required other than updating n8n when new versions come out. I am hoping this is the only thing I will be doing as I really fear breaking the whole thing once its setup.
Fwiw errors and problems even happen to professionals, it’s never a bad idea to prepare for these. So before making any changes I’d suggest you make sure that regular backups are in place. This could for example be done by enabling the backup functionality offered by your provider.
You can then easily roll your server back to a previous state in case something goes wrong.
As for running the update itself it would depend on how exactly you have deployed n8n. Assuming you are using
docker compose the process would consist of pulling the latest n8n image, then removing the old n8n container and starting a new one using the fresh image. This is documented on Docker | n8n Docs.
Hope this helps!
Hi @MutedJam, I have since established backup for the droplet, so that’s at least a starting point. I have also managed to update n8n twice so far minus any issues on docker.
However the only advice I would require would be security related and something not captured in your documentation. The first thing would be how to disable the root account and disable the ability to use the password option. I have already established an account with sudo permissions and I want to ensure the root account remains inaccessible as well as the password login access option is not available. Only through SSH can you establish a connection. Is this necessary do you think, am I in danger if the root account remains available and password access is still active?
I am also interested in ensuring that my docker setup is always up to date, therefore the ability to update the server OS is critical for me. I have since been shown how to update a server which of course will also update the docker setup. However if you have data, I would appreciate the share
Only through SSH can you establish a connection. Is this necessary do you think, am I in danger if the root account remains available and password access is still active?
Hi @Keep_Innovations, I’d say it’s generally a good idea and I typically create a regular user and disable SSH logins for the root user on all my servers. DigitalOcean has a number of tutorials on this which I find very helpful here. Check out this one:
I am also interested in ensuring that my docker setup is always up to date
There are tools that can help with auto-updating your docker images. Watchtower is probably the most common one, and there is a DO tutorial as well: