Starting Point: https://docs.vultr.com/how-to-host-a-joplin-server-with-docker-on-ubuntu
Script wright up https://raspberrytips.com/docker-on-raspberry-pi/
curl -sSL https://get.docker.com | sh
Add new user
adduser [username]
adduser [username] sudo
addeser [username] docker
Login as new user
sudo passwd -l root
sudo mkdir /opt/joplin
cd /opt/joplin/
sudo nano joplin-docker-compose.yml
**This Juplin setup will also use docker for nginx proxy **
The values 5434 and 8080 are examples. You can change these if required.
Replace http://192.168.0.5:80 with your ip address.
Replace the values for POSTGRES_PASSWORD, POSTGRES_DATABASE, and POSTGRES_USER with your preferred values.
version: '3' services: db: image: postgres:13 volumes: - ./data/postgres:/var/lib/postgresql/data ports: - "5432:5432" restart: always environment: - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_DB=${POSTGRES_DB} app: image: joplin/server:latest container_name: joplin-server depends_on: - db ports: - "8080:8080" restart: always environment: - APP_PORT=8080 - APP_BASE_URL=${APP_BASE_URL} - DB_CLIENT=pg - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_DATABASE=${POSTGRES_DB} - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PORT=5432 - POSTGRES_HOST=db nginx: image: nginx:latest container_name: nginx-proxy ports: - "80:80" volumes: - ./nginx/joplin-server.conf:/etc/nginx/conf.d/joplin-server.conf - ./nginx/log:/var/log/nginx depends_on: - app restart: always
version: '3'
services:
db:
image: postgres:13
volumes:
- ./data/postgres:/var/lib/postgresql/data
ports:
- "5432:5432"
restart: always
environment:
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_DB=${POSTGRES_DB}
app:
image: joplin/server:latest
container_name: joplin-server
depends_on:
- db
ports:
- "8080:8080"
restart: always
environment:
- APP_PORT=8080
- APP_BASE_URL=${APP_BASE_URL}
- DB_CLIENT=pg
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DATABASE=${POSTGRES_DB}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PORT=5432
- POSTGRES_HOST=db
nginx:
image: nginx:latest
container_name: nginx-proxy
ports:
- "80:80"
volumes:
- ./nginx/joplin-server.conf:/etc/nginx/conf.d/joplin-server.conf
- ./nginx/log:/var/log/nginx
depends_on:
- app
restart: always
sudo mkdir -p ./nginx/log
sudo mkdir -p ./nginx/conf.d
sudo nano ./nginx/joplin-server.conf
server { listen 80; listen [::]:80; server_name 192.168.0.#; # Replace with the IP address of your Docker host error_log /var/log/nginx/joplin-server.error; location / { proxy_pass http://192.168.0.#:8080; # This remains the same (proxying to Joplin container) proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
server {
listen 80;
listen [::]:80;
server_name 192.168.0.#; # Replace with the IP address of your Docker host
error_log /var/log/nginx/joplin-server.error;
location / {
proxy_pass http://192.168.0.#:8080; # This remains the same (proxying to Joplin container)
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
sudo nano .env
POSTGRES_PASSWORD=Your-Password-here POSTGRES_USER=joplin-user POSTGRES_DB=joplindb APP_BASE_URL=http://192.168.0.#:80
POSTGRES_PASSWORD=Your-Password-here
POSTGRES_USER=joplin-user
POSTGRES_DB=joplindb
APP_BASE_URL=http://192.168.0.#:80
.env
Filesudo chmod 600 .env
sudo chown ve:ve .env # Or the specific user that needs access
sudo docker compose --env-file .env -f joplin-docker-compose.yml up -d
Log in to the Joplin server with the following default email and password.
admin@localhost
admin