mirror of
https://github.com/nickyeoman/docker-compose-cookbooks.git
synced 2026-09-03 18:36:22 +00:00
refactor: rewrite yourls_dev to match template conventions
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
# YOURLS
|
||||
|
||||
## Overview
|
||||
|
||||
YOURLS (Your Own URL Shortener) is a self-hosted URL shortener with
|
||||
link statistics, a bookmarklet, and a plugin API. This stack runs
|
||||
YOURLS with a MariaDB database.
|
||||
|
||||
## Project Details
|
||||
|
||||
- **Project Repository:** [github.com/YOURLS/YOURLS](https://github.com/YOURLS/YOURLS)
|
||||
- **Container Image:** [Docker Hub](https://hub.docker.com/_/yourls)
|
||||
- **Documentation:** [yourls.org](https://yourls.org/)
|
||||
- **Reverse Proxy Port:** `80`
|
||||
|
||||
## Getting Started
|
||||
|
||||
1. Copy `sample.env` and set `YOURLS_SITE`, the admin login, and the
|
||||
database passwords
|
||||
2. Start the containers: `docker compose up -d`
|
||||
3. Open http://localhost:8080/admin/ in your browser and run the
|
||||
install step, then sign in with `YOURLS_USER` / `YOURLS_PASS`
|
||||
|
||||
## Environment Variable Notes
|
||||
|
||||
YOURLS_SITE – public base URL used in generated short links; must
|
||||
match how users reach the site (domain behind the proxy)
|
||||
YOURLS_USER / YOURLS_PASS – admin login for the /admin/ interface
|
||||
YOURLS_DB_NAME / YOURLS_DB_USER / YOURLS_DB_PASSWORD – database
|
||||
name and credentials, shared by both services
|
||||
YOURLS_MYSQL_ROOT_PASSWORD – MariaDB root password
|
||||
YOURLS_PORT – host port for the web UI (default 8080)
|
||||
|
||||
## Volume Notes
|
||||
|
||||
- `/var/www/html` — YOURLS application files and plugins; stored at
|
||||
`${VOL_PATH:-/data}/yourls/html` on the host
|
||||
- `/var/lib/mysql` — MariaDB data; stored at
|
||||
`${VOL_PATH:-/data}/yourls/db` on the host
|
||||
|
||||
## Network Notes
|
||||
|
||||
Requires proxy network. The database is only attached to the stack's
|
||||
`internal` network.
|
||||
|
||||
## Docker Run
|
||||
|
||||
Not recommended — YOURLS needs its MariaDB companion. Use the compose
|
||||
file.
|
||||
|
||||
## Additional Notes / Gotchas
|
||||
|
||||
- This is a `_dev` stack — experimental, not yet production-ready.
|
||||
- The admin interface is at `/admin/`, not the site root.
|
||||
- Changing `YOURLS_SITE` after install does not rewrite existing
|
||||
short links; set it correctly before creating links.
|
||||
|
||||
## Dockhand Stack, Deploy from Git
|
||||
|
||||
- Cookbooks Repository
|
||||
- stackname: yourls_dev
|
||||
- Compose file path: yourls_dev/compose.yaml
|
||||
- Additional env file (optional): yourls_dev/sample.env
|
||||
|
||||
Then "Load" yourls_dev/sample.env into the Environment variables in dockhand.
|
||||
|
||||
Create the Stack
|
||||
@@ -0,0 +1,50 @@
|
||||
# YOURLS URL Shortener
|
||||
|
||||
services:
|
||||
yourls:
|
||||
image: ${YOURLS_IMAGE:-yourls:latest}
|
||||
restart: ${YOURLS_RESTART:-unless-stopped}
|
||||
|
||||
volumes:
|
||||
- ${VOL_PATH:-/data}/yourls/html:/var/www/html
|
||||
|
||||
environment:
|
||||
- YOURLS_DB_HOST=yourls-db
|
||||
- YOURLS_DB_USER=${YOURLS_DB_USER:-yourls}
|
||||
- YOURLS_DB_PASS=${YOURLS_DB_PASSWORD:-changeme}
|
||||
- YOURLS_DB_NAME=${YOURLS_DB_NAME:-yourls}
|
||||
- YOURLS_SITE=${YOURLS_SITE:-http://localhost:8080}
|
||||
- YOURLS_USER=${YOURLS_USER:-admin}
|
||||
- YOURLS_PASS=${YOURLS_PASS:-changeme}
|
||||
|
||||
ports:
|
||||
- "${YOURLS_PORT:-8080}:80"
|
||||
|
||||
networks:
|
||||
- proxy
|
||||
- internal
|
||||
|
||||
depends_on:
|
||||
- yourls-db
|
||||
|
||||
yourls-db:
|
||||
image: ${MARIADB_IMAGE:-mariadb:11}
|
||||
restart: ${YOURLS_RESTART:-unless-stopped}
|
||||
|
||||
volumes:
|
||||
- ${VOL_PATH:-/data}/yourls/db:/var/lib/mysql
|
||||
|
||||
environment:
|
||||
- MYSQL_ROOT_PASSWORD=${YOURLS_MYSQL_ROOT_PASSWORD:-changeme-root}
|
||||
- MYSQL_DATABASE=${YOURLS_DB_NAME:-yourls}
|
||||
- MYSQL_USER=${YOURLS_DB_USER:-yourls}
|
||||
- MYSQL_PASSWORD=${YOURLS_DB_PASSWORD:-changeme}
|
||||
|
||||
networks:
|
||||
- internal
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
external: true
|
||||
internal:
|
||||
driver: bridge
|
||||
@@ -1,33 +0,0 @@
|
||||
services:
|
||||
|
||||
yourls-db:
|
||||
# https://hub.docker.com/_/mariadb/
|
||||
image: mariadb:${DB_V}
|
||||
restart: always
|
||||
volumes:
|
||||
- ${VOL_PATH:-./data}/yourls-db:/var/lib/mysql
|
||||
networks:
|
||||
- yourls-net
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: ${YOURLS_MYSQL_ROOT_PASSWORD}
|
||||
MYSQL_PASSWORD: ${YOURLS_MYSQL_PASSWORD}
|
||||
MYSQL_DATABASE: db_yourls
|
||||
MYSQL_USER: yourls
|
||||
|
||||
yourls:
|
||||
# reference: https://github.com/matomo-org/docker/blob/master/.examples/docker-compose.yml
|
||||
image: yourls
|
||||
restart: always
|
||||
volumes:
|
||||
- ${VOL_PATH:-./data}/yourls:/var/www/html
|
||||
networks:
|
||||
- yourls-net
|
||||
- proxy
|
||||
environment:
|
||||
YOURLS_DB_HOST: ${PREFIX}_yourls-db_1
|
||||
YOURLS_DB_USER: yourls
|
||||
YOURLS_DB_PASS: ${YOURLS_MYSQL_PASSWORD}
|
||||
YOURLS_DB_NAME: db_yourls
|
||||
YOURLS_SITE: https://${YOURLS_DOMAIN_NAME}
|
||||
YOURLS_USER: ${YOURLS_USER}
|
||||
YOURLS_PASS: ${YOURLS_PASS}
|
||||
@@ -1,12 +0,0 @@
|
||||
# Domains & Project
|
||||
PREFIX=p1
|
||||
YOURLS_DOMAIN_NAME=yourls.nickyeoman.com
|
||||
|
||||
# Passwords
|
||||
YOURLS_MYSQL_ROOT_PASSWORD=ChangeMe2ASecurepass!
|
||||
YOURLS_MYSQL_PASSWORD=Again2ASecurepass!
|
||||
YOURLS_USER=username
|
||||
YOURLS_PASS=Password4urls
|
||||
|
||||
# Software versions
|
||||
DB_V=10.4.11
|
||||
@@ -0,0 +1,18 @@
|
||||
YOURLS_IMAGE=yourls:latest
|
||||
MARIADB_IMAGE=mariadb:11
|
||||
YOURLS_RESTART=unless-stopped
|
||||
VOL_PATH=/data
|
||||
YOURLS_PORT=8080
|
||||
|
||||
# Site URL (public URL used in generated short links)
|
||||
YOURLS_SITE=http://localhost:8080
|
||||
|
||||
# Admin login
|
||||
YOURLS_USER=admin
|
||||
YOURLS_PASS=changeme
|
||||
|
||||
# Database
|
||||
YOURLS_DB_NAME=yourls
|
||||
YOURLS_DB_USER=yourls
|
||||
YOURLS_DB_PASSWORD=changeme
|
||||
YOURLS_MYSQL_ROOT_PASSWORD=changeme-root
|
||||
Reference in New Issue
Block a user