This provides an easy way to install Lemmy on any server. It automatically sets up an nginx server, letsencrypt certificates, and email.
To run this ansible playbook, you need to:
- Have a Debian-based server / VPS where lemmy will run.
- Configure a DNS
A
Record 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 on your local machine (do not install it on your destination server).
-
Clone this repo:
git clone https://github.com/LemmyNet/lemmy-ansible.git cd lemmy-ansible
-
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.hjson
Edit 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/hosts
Edit the inventory hosts file (inventory/hosts) to your liking.
-
Copy the sample postgresql.conf
cp examples/customPostgresql.conf inventory/host_vars/<your-domain>/customPostgresql.conf
You can use the PGTune tool to tune your postgres to meet your server memory and CPU.
-
Run the playbook:
ansible-playbook -i inventory/hosts lemmy.yml
Note: 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-pass
Note: 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-pass
Full 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
- Run
git pull
- Check out the Lemmy Releases Changelog to see if there are any config changes with the releases since your last.
- Run
ansible-playbook -i inventory/hosts lemmy.yml --become
- Follow this guide to backup your existing install.
- Run
docker-compose stop
to 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.hjson
is 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. ↩