From 431210025df8f4ab5eeb2eb4c39b449aba308b58 Mon Sep 17 00:00:00 2001 From: Dessalines Date: Tue, 20 Aug 2019 16:20:46 -0700 Subject: [PATCH] Some fixes for the docker build. - Messed with readme. - They needed to be `.env`, not `env`. - Leaving the nginx file there, but extracting it out of the main setup. Ppl might use apache, or none at all. - Docker 3.3 doesn't work with the DB health check unfortunately, so I changed that back to 2.4. - Changed the env in the docker folder so it doesn't need to be edited, someone could just pull this and start it up if they just wanna test it. --- README.md | 57 ++++++++++++++-------------------- docker/dev/.env | 4 +++ docker/dev/docker-compose.yml | 16 +++++----- docker/prod/.env | 4 +++ docker/prod/docker-compose.yml | 16 +++++----- docker/prod/env | 4 --- 6 files changed, 49 insertions(+), 52 deletions(-) create mode 100644 docker/dev/.env create mode 100644 docker/prod/.env delete mode 100644 docker/prod/env diff --git a/README.md b/README.md index 2283ee464..af945f427 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ Front Page|Post - Open source, [AGPL License](/LICENSE). - Self hostable, easy to deploy. - - Comes with [Docker](#docker). + - Comes with [Docker](#docker), [Ansible](#ansible). - Live-updating Comment threads. - Full vote scores `(+/-)` like old reddit. - Moderation abilities. @@ -64,51 +64,42 @@ Made with [Rust](https://www.rust-lang.org), [Actix](https://actix.rs/), [Infern ## Install -### Ansible (recommended) +### Docker -First, you need to [install Ansible on your local computer](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html), -eg using `sudo apt install ansible`, or the equivalent for you platform. - -Then run the following commands on your local computer: -```bash -git clone https://github.com/dessalines/lemmy.git -cd lemmy/ansible/ -cp inventory.example inventory -nano inventory # enter your server, domain, contact email -ansible-playbook lemmy.yml -``` - -### Manual - -Make sure you have both docker and docker-compose installed. +Make sure you have both docker and docker-compose(>=`1.24.0`) installed. ``` mkdir lemmy/ cd lemmy/ wget https://raw.githubusercontent.com/dessalines/lemmy/master/docker/prod/docker-compose.yml wget https://raw.githubusercontent.com/dessalines/lemmy/master/docker/prod/env -O .env -wget https://raw.githubusercontent.com/dessalines/lemmy/master/docker/prod/nginx.conf -# you need to edit .env and nginx.conf to replace the indicated {{ variables }} -sudo mv nginx.conf /etc/nginx/sites-enabled/lemmy.conf +# Edit the .env for custom passwords docker-compose up -d ``` and goto http://localhost:8536 -### Nginx Config -``` -location / { - rewrite (\/(user|u|inbox|post|community|c|login|search|sponsors|communities|modlog|home)+) /static/index.html break; - proxy_pass http://0.0.0.0:8536; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header Host $host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; +[A sample nginx config](/docker/prod/nginx.conf), could be setup with: - # WebSocket support - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; -} +``` +wget https://raw.githubusercontent.com/dessalines/lemmy/master/docker/prod/nginx.conf +# Replace the {{ vars }} +sudo mv nginx.conf /etc/nginx/sites-enabled/lemmy.conf +``` + +### Ansible + +First, you need to [install Ansible on your local computer](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html), +eg using `sudo apt install ansible`, or the equivalent for you platform. + +Then run the following commands on your local computer: + +```bash +git clone https://github.com/dessalines/lemmy.git +cd lemmy/ansible/ +cp inventory.example inventory +nano inventory # enter your server, domain, contact email +ansible-playbook lemmy.yml ``` ## Develop diff --git a/docker/dev/.env b/docker/dev/.env new file mode 100644 index 000000000..f82502d7f --- /dev/null +++ b/docker/dev/.env @@ -0,0 +1,4 @@ +DOMAIN=my_domain +DATABASE_PASSWORD=password +DATABASE_URL=postgres://lemmy:password@lemmy_db:5432/lemmy +JWT_SECRET=changeme diff --git a/docker/dev/docker-compose.yml b/docker/dev/docker-compose.yml index b4daff61c..515a1e4cf 100644 --- a/docker/dev/docker-compose.yml +++ b/docker/dev/docker-compose.yml @@ -5,13 +5,13 @@ services: image: postgres:12-alpine restart: always environment: - POSTGRES_USER: rrr - POSTGRES_PASSWORD: rrr - POSTGRES_DB: rrr + - POSTGRES_USER=lemmy + - POSTGRES_PASSWORD=${DATABASE_PASSWORD} + - POSTGRES_DB=lemmy volumes: - lemmy_db:/var/lib/postgresql/data healthcheck: - test: ["CMD-SHELL", "pg_isready -U rrr"] + test: ["CMD-SHELL", "pg_isready -U lemmy"] interval: 5s timeout: 5s retries: 20 @@ -22,10 +22,10 @@ services: ports: - "8536:8536" environment: - LEMMY_FRONT_END_DIR: /app/dist - DATABASE_URL: postgres://rrr:rrr@lemmy_db:5432/rrr - JWT_SECRET: changeme - HOSTNAME: rrr + - LEMMY_FRONT_END_DIR=/app/dist + - DATABASE_URL=${DATABASE_URL} + - JWT_SECRET=${JWT_SECRET} + - HOSTNAME=${DOMAIN} restart: always depends_on: lemmy_db: diff --git a/docker/prod/.env b/docker/prod/.env new file mode 100644 index 000000000..f82502d7f --- /dev/null +++ b/docker/prod/.env @@ -0,0 +1,4 @@ +DOMAIN=my_domain +DATABASE_PASSWORD=password +DATABASE_URL=postgres://lemmy:password@lemmy_db:5432/lemmy +JWT_SECRET=changeme diff --git a/docker/prod/docker-compose.yml b/docker/prod/docker-compose.yml index d55b28088..dab2a9c32 100644 --- a/docker/prod/docker-compose.yml +++ b/docker/prod/docker-compose.yml @@ -1,8 +1,7 @@ -version: "3.3" +version: '2.4' services: - - db: + lemmy_db: image: postgres:12-alpine restart: always environment: @@ -10,15 +9,14 @@ services: - POSTGRES_PASSWORD=${DATABASE_PASSWORD} - POSTGRES_DB=lemmy volumes: - - ./volumes/db:/var/lib/postgresql/data + - lemmy_db:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U lemmy"] interval: 5s timeout: 5s retries: 20 - lemmy: - image: dessalines/lemmy:v0.0.7 .3 + image: dessalines/lemmy:v0.0.7.3 restart: always ports: - "8536:8536" @@ -27,5 +25,9 @@ services: - DATABASE_URL=${DATABASE_URL} - JWT_SECRET=${JWT_SECRET} - HOSTNAME=${DOMAIN} + restart: always depends_on: - - db + lemmy_db: + condition: service_healthy +volumes: + lemmy_db: diff --git a/docker/prod/env b/docker/prod/env deleted file mode 100644 index 06f3cfe21..000000000 --- a/docker/prod/env +++ /dev/null @@ -1,4 +0,0 @@ -DOMAIN={{your domain}} -DATABASE_PASSWORD={{a random password for postgres}} -DATABASE_URL=postgres://lemmy:{{ the same postgres password again }}@db:5432/lemmy -JWT_SECRET={{ a random password for jwt}}