This provides an easy way to install Lemmy on any server. It automatically sets up an nginx server, letsencrypt certificates, docker containers, pict-rs, and email smtp.
To run this ansible playbook, you need to:
- Have a Debian/AlmaLinux 9-based server / VPS where lemmy will run.
- Supported CPU architectures are x86-64 and ARM64.
- Configure a DNS
ARecord to point at your server's IP address. - Make sure you can ssh to it, with a sudo user:
ssh <your-user>@<your-domain> - Install Ansible (>=
2.11.0on your local machine (do not install it on your destination server)).
These are the distributions we currently support. Anything not listed here is currently not supported.
If you wish to see another distribution on the list, please test on the latest commit in main and report your findings via an Issue.
| Distribution | Version | Playbook |
|---|---|---|
| Debian | 10 | lemmy.yml |
| Debian | 11 | lemmy.yml |
| Debian | 12 | lemmy.yml |
| Ubuntu | 22.04 LTS | lemmy.yml |
| RHEL | 9 | lemmy-almalinux.yml |
-
Clone this repo & checkout latest tag
git clone https://github.com/LemmyNet/lemmy-ansible.git cd lemmy-ansible git checkout $(git describe --tags) -
Make a directory to hold your config:
mkdir -p inventory/host_vars/<your-domain> -
Copy the sample configuration file:
cp examples/config.hjson inventory/host_vars/<your-domain>/config.hjsonEdit that file and change the config to your liking. Note: Do not edit anything inside the {{ }} braces.
-
Copy the sample inventory hosts file:
cp examples/hosts inventory/hostsEdit the inventory hosts file (inventory/hosts) to your liking.
-
Copy the sample postgresql.conf
cp examples/customPostgresql.conf inventory/host_vars/<your-domain>/customPostgresql.confYou can use the PGTune tool to tune your postgres to meet your server memory and CPU.
-
Copy the sample
vars.ymlfilecp examples/vars.yml inventory/host_vars/<your-domain>/vars.ymlEdit the
inventory/host_vars/<your-domain>/vars.ymlfile to your liking. -
Install the ansible requirements
ansible-galaxy install -r requirements.yml -
Run the playbook:
Note: See the "Supported Distribution Playbook Matrix" section above if you should use
lemmy.ymlor notansible-playbook -i inventory/hosts lemmy.ymlNote: if you are not the root user or don't have password-less sudo, use this command:
ansible-playbook -i inventory/hosts lemmy.yml --become --ask-become-passNote: if you haven't set up ssh keys1, and ssh using a password, use the command:
ansible-playbook -i inventory/hosts lemmy.yml --become --ask-pass --ask-become-passFull ansible command-line docs
If the command above fails, you may need to comment out this line In the ansible.cfg file:
interpreter_python=/usr/bin/python3
Please see the dedicated UPGRADING document for all upgrade processess
Since version 1.1.0 we no longer default to using main but use tags to make sure deployments are versioned.
With every new release all migration steps shall be written in the UPGRADING document.
When updating please make sure you check out the Lemmy Releases Changelog to see if there are any config changes with the releases since your last read.
- Follow this guide to backup your existing install.
- Run
docker-compose stopto stop lemmy. - Move your docker folders on the server to
<lemmy_base_dir>/<your-domain>. - Copy your postgres password to
inventory/host_vars/<your-domain>/passwords/postgres. - Follow the install guide above, making sure your
config.hjsonis the same as your backup.
ansible-playbook -i inventory/hosts uninstall.yml --become
Footnotes
-
To create an ssh key pair with your host environment, you can follow the instructions here, and then copy the key to your host server. ↩