Setup Linkwarden
Overview
Linkwarden is an open-source collaborative bookmark manager to collect, organize and preserve webpages.
Important Docker Files
.env file
.env
NAME=linkwarden
SUB=link
DOMAIN=
TZ=America/New_York
SECRET=
APPDATA=
PORT=3000
DB_NAME=linkwarden
DB_USER=linkwarden
DB_PASS=
# Additional Optional Settings
PAGINATION_TAKE_COUNT=
STORAGE_FOLDER=
AUTOSCROLL_TIMEOUT=
NEXT_PUBLIC_DISABLE_REGISTRATION=
IMPORT_SIZE_LIMIT=
# AWS S3 Settings
SPACES_KEY=
SPACES_SECRET=
SPACES_ENDPOINT=
SPACES_REGION=
# SMTP Settings
NEXT_PUBLIC_EMAIL_PROVIDER=
EMAIL_FROM=
EMAIL_SERVER=
docker-compose.yml file
docker-compose.yml
services:
linkwarden:
container_name: ${NAME}
image: ghcr.io/linkwarden/linkwarden
restart: unless-stopped
volumes:
- ${APPDATA}/${NAME}/config:/data/data
depends_on:
- ${NAME}-db
environment:
DATABASE_URL: postgresql://${DB_USER}:${DB_PASS}@${NAME}-db:5432/${DB_NAME}
NEXTAUTH_URL: https://${NAME}.${DOMAIN}
NEXTAUTH_SECRET: ${SECRET}
NEXT_PUBLIC_DISABLE_REGISTRATION: true
networks:
- proxy
- internal-db
dns:
- '10.1.10.1'
labels:
swag: enable
swag_address: ${NAME}
swag_port: ${PORT}
swag_proto: http
swag_url: ${SUB}.${DOMAIN}
com.centurylinklabs.watchtower.enable: true
linkwarden-db:
container_name: ${NAME}-db
#image: pgautoupgrade/pgautoupgrade:17-alpine
image: postgres:17-alpine
restart: unless-stopped
healthcheck:
interval: 10s
retries: 10
test: pg_isready -U ${DB_USER} -d ${DB_NAME}
timeout: 2s
networks:
- internal-db
environment:
TZ: ${TZ}
POSTGRES_DB: ${DB_NAME}
POSTGRES_USER: ${DB_USER}
POSTGRES_PASSWORD: ${DB_PASS}
volumes:
- ${APPDATA}/${NAME}/${NAME}-db:/var/lib/postgresql/data
labels:
traefik.enable: false
com.centurylinklabs.watchtower.enable: true
networks:
proxy:
external: true
internal-db:
external: true
Start the Container
Start the Container
docker compose up -d