mirror of
https://github.com/Theodor-Springmann-Stiftung/server-package.git
synced 2025-12-16 14:45:30 +00:00
+bookstack
This commit is contained in:
26
deckard/bookstack/.env.example
Normal file
26
deckard/bookstack/.env.example
Normal file
@@ -0,0 +1,26 @@
|
||||
# BookStack Production Configuration
|
||||
# Copy this file to .env and update with your actual values
|
||||
|
||||
# ============================================
|
||||
# User/Group Configuration
|
||||
# ============================================
|
||||
# Run `id` on your host to get your UID/GID
|
||||
PUID=1000
|
||||
PGID=1000
|
||||
|
||||
# Timezone
|
||||
TZ=Europe/Berlin
|
||||
|
||||
# ============================================
|
||||
# Database Configuration
|
||||
# ============================================
|
||||
|
||||
# Database name
|
||||
DB_DATABASE=bookstack_testing
|
||||
DB_USERNAME=bookstack_testing
|
||||
DB_PASSWORD=testing_password_123
|
||||
MYSQL_ROOT_PASSWORD=testing_password_123
|
||||
|
||||
# Optional: Enable async email processing (recommended for better performance)
|
||||
# QUEUE_CONNECTION=database
|
||||
|
||||
26
deckard/bookstack/.gitignore
vendored
Normal file
26
deckard/bookstack/.gitignore
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
# Environment configuration (contains secrets)
|
||||
.env
|
||||
bookstack.env
|
||||
|
||||
# Testing data directory (bind mount)
|
||||
bookstack_testing_data/
|
||||
.claude/
|
||||
|
||||
# Backups
|
||||
*.sql
|
||||
*.tar.gz
|
||||
backup*/
|
||||
|
||||
# Docker override
|
||||
docker-compose.override.yml
|
||||
|
||||
# OS files
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
# Editor files
|
||||
.vscode/
|
||||
.idea/
|
||||
*.swp
|
||||
*.swo
|
||||
*~
|
||||
423
deckard/bookstack/README.md
Normal file
423
deckard/bookstack/README.md
Normal file
@@ -0,0 +1,423 @@
|
||||
# BookStack for Deckard
|
||||
|
||||
Production deployment of BookStack using the official [linuxserver.io](https://docs.linuxserver.io/images/docker-bookstack/) Docker image.
|
||||
|
||||
## Overview
|
||||
|
||||
This setup uses:
|
||||
- **Official linuxserver/bookstack image** - Pre-built, well-maintained
|
||||
- **MariaDB database** - linuxserver/mariadb image
|
||||
- **Caddy reverse proxy** - For production HTTPS
|
||||
- **All configuration via .env** - No secrets in docker-compose files
|
||||
- **Persistent volumes** - Data stored in `./bookstack_data`
|
||||
|
||||
## Quick Start - Production
|
||||
|
||||
### 1. Generate APP_KEY
|
||||
|
||||
```bash
|
||||
docker run -it --rm --entrypoint /bin/bash lscr.io/linuxserver/bookstack:latest appkey
|
||||
```
|
||||
|
||||
Copy the output (looks like `base64:xxxxx...`)
|
||||
|
||||
### 2. Configure Environment
|
||||
|
||||
#### 2.1 Settings for DB/Docker
|
||||
|
||||
```bash
|
||||
# Copy example file
|
||||
cp .env.example .env
|
||||
|
||||
# Edit configuration
|
||||
nano .env
|
||||
```
|
||||
|
||||
**Required changes:**
|
||||
- MySQL settings
|
||||
- `PUID`/`PGID` - Run `id` to get your user/group IDs
|
||||
- `TZ` - Your timezone
|
||||
|
||||
#### 2.2 Settings for BookStack
|
||||
|
||||
```bash
|
||||
cp bookstack.env.example bookstack.env
|
||||
```
|
||||
|
||||
REQUIRED CHANGES:
|
||||
- App name / App kek
|
||||
- Email settings
|
||||
|
||||
|
||||
### 3. Configure Caddy
|
||||
|
||||
```bash
|
||||
# Navigate to Caddy sites directory
|
||||
cd ../server-package/deckard/caddy/sites/
|
||||
|
||||
# Rename template to your domain
|
||||
mv wiki.yourdomain.com wiki.tss-hd.de
|
||||
|
||||
# Edit and update domain names
|
||||
nano wiki.tss-hd.de
|
||||
```
|
||||
|
||||
### 4. Deploy
|
||||
|
||||
```bash
|
||||
# Return to tss-bookstack directory
|
||||
cd /home/simon/source/tss-bookstack
|
||||
|
||||
# Create caddynet network if needed
|
||||
docker network create caddynet 2>/dev/null || true
|
||||
|
||||
# Start services
|
||||
docker compose up -d
|
||||
|
||||
# Check logs
|
||||
docker compose logs -f
|
||||
```
|
||||
|
||||
### 5. Reload Caddy
|
||||
|
||||
```bash
|
||||
cd ../server-package/deckard/caddy
|
||||
docker compose restart caddy
|
||||
```
|
||||
|
||||
### 6. Access & Login
|
||||
|
||||
Navigate to your domain (e.g., `https://wiki.tss-hd.de`)
|
||||
|
||||
**Default credentials:**
|
||||
- Email: `admin@admin.com`
|
||||
- Password: `password`
|
||||
|
||||
**⚠️ CHANGE THESE IMMEDIATELY!**
|
||||
|
||||
## Quick Start - Local Testing
|
||||
|
||||
For testing locally without Caddy reverse proxy:
|
||||
|
||||
### 1. Generate APP_KEY
|
||||
|
||||
```bash
|
||||
docker run -it --rm --entrypoint /bin/bash lscr.io/linuxserver/bookstack:latest appkey
|
||||
```
|
||||
|
||||
### 2. Configure for Testing
|
||||
|
||||
```bash
|
||||
# Copy testing example
|
||||
cp .env.testing.example .env
|
||||
|
||||
# Edit and add your APP_KEY
|
||||
nano .env
|
||||
```
|
||||
|
||||
### 3. Start Testing Instance
|
||||
|
||||
```bash
|
||||
# Start on port 8080 (default)
|
||||
docker compose -f docker-compose.testing.yml up -d
|
||||
|
||||
# Or use custom port
|
||||
HOST_PORT=9000 docker compose -f docker-compose.testing.yml up -d
|
||||
```
|
||||
|
||||
### 4. Access Locally
|
||||
|
||||
Navigate to `http://localhost:8080` (or your custom HOST_PORT)
|
||||
|
||||
**Default credentials:** `admin@admin.com` / `password`
|
||||
|
||||
### 5. Cleanup
|
||||
|
||||
```bash
|
||||
# Stop and remove containers (keeps data)
|
||||
docker compose -f docker-compose.testing.yml down
|
||||
|
||||
# Stop and remove everything including data
|
||||
docker compose -f docker-compose.testing.yml down
|
||||
rm -rf bookstack_testing_data
|
||||
```
|
||||
|
||||
## File Structure
|
||||
|
||||
```
|
||||
tss-bookstack/
|
||||
├── docker-compose.yml # Production (with Caddy)
|
||||
├── docker-compose.testing.yml # Local testing (without Caddy)
|
||||
├── .env.example # Production config template
|
||||
├── .env.testing.example # Testing config template
|
||||
├── .env # Your actual config (not in git)
|
||||
├── .gitignore # Git ignore rules
|
||||
├── README.md # This file
|
||||
├── QUICKSTART.md # Quick reference guide
|
||||
├── TESTING.md # Local testing guide
|
||||
├── VOLUMES.md # Volume management guide
|
||||
└── EMAIL.md # Email configuration guide
|
||||
```
|
||||
|
||||
## Data Storage
|
||||
|
||||
### Production - Named Volumes
|
||||
|
||||
Production uses **Docker named volumes** (managed by Docker):
|
||||
|
||||
```yaml
|
||||
volumes:
|
||||
bookstack_data: # BookStack application data
|
||||
bookstack_db: # MariaDB database
|
||||
```
|
||||
|
||||
Data location: `/var/lib/docker/volumes/bookstack_data/_data/`
|
||||
|
||||
```bash
|
||||
# List volumes
|
||||
docker volume ls | grep bookstack
|
||||
|
||||
# Inspect volume
|
||||
docker volume inspect bookstack_data
|
||||
```
|
||||
|
||||
### Testing - Bind Mounts
|
||||
|
||||
Testing uses **bind mounts** (direct folder access):
|
||||
|
||||
```
|
||||
bookstack_testing_data/
|
||||
├── www/ # BookStack application files
|
||||
│ ├── .env # BookStack configuration
|
||||
│ ├── files/ # Uploaded files
|
||||
│ ├── images/ # Uploaded images
|
||||
│ └── themes/ # Custom themes
|
||||
├── log/ # Application logs
|
||||
├── backups/ # Database backups
|
||||
└── db/ # MariaDB database
|
||||
```
|
||||
|
||||
See `VOLUMES.md` for detailed information on backups and volume management
|
||||
|
||||
## Configuration
|
||||
|
||||
### Environment Variables
|
||||
|
||||
All configuration is in `.env`:
|
||||
|
||||
| Variable | Description | Example |
|
||||
|----------|-------------|---------|
|
||||
| `PUID` | User ID for file permissions | `1000` |
|
||||
| `PGID` | Group ID for file permissions | `1000` |
|
||||
| `TZ` | Timezone | `Europe/Berlin` |
|
||||
| `APP_URL` | Your BookStack URL | `https://wiki.tss-hd.de` |
|
||||
| `APP_KEY` | Encryption key (generate with appkey command) | `base64:xxx...` |
|
||||
| `DB_DATABASE` | Database name | `bookstack` |
|
||||
| `DB_USERNAME` | Database user | `bookstack` |
|
||||
| `DB_PASSWORD` | Database password | `secure_password` |
|
||||
| `MYSQL_ROOT_PASSWORD` | MySQL root password | `root_password` |
|
||||
| `MAIL_DRIVER` | Mail driver (`log` or `smtp`) | `log` |
|
||||
|
||||
### Additional BookStack Configuration
|
||||
|
||||
To configure advanced features (LDAP, SMTP, etc.), edit the `.env` file inside the container:
|
||||
|
||||
```bash
|
||||
# Access the file via container
|
||||
docker exec -it bookstack nano /config/www/.env
|
||||
|
||||
# Or copy out, edit, and copy back
|
||||
docker cp bookstack:/config/www/.env .env.bookstack
|
||||
nano .env.bookstack
|
||||
docker cp .env.bookstack bookstack:/config/www/.env
|
||||
```
|
||||
|
||||
Then restart BookStack:
|
||||
|
||||
```bash
|
||||
docker compose restart bookstack
|
||||
```
|
||||
|
||||
See [BookStack documentation](https://www.bookstackapp.com/docs/) for available options.
|
||||
|
||||
## Maintenance
|
||||
|
||||
### View Logs
|
||||
|
||||
```bash
|
||||
# All services
|
||||
docker compose logs -f
|
||||
|
||||
# Just BookStack
|
||||
docker compose logs -f bookstack
|
||||
|
||||
# Just Database
|
||||
docker compose logs -f bookstack-db
|
||||
```
|
||||
|
||||
### Update BookStack
|
||||
|
||||
```bash
|
||||
# Pull latest images
|
||||
docker compose pull
|
||||
|
||||
# Recreate containers
|
||||
docker compose up -d
|
||||
|
||||
# Clean up old images
|
||||
docker image prune
|
||||
```
|
||||
|
||||
### Backup
|
||||
|
||||
#### Backup Database
|
||||
|
||||
```bash
|
||||
# Export database SQL dump
|
||||
docker exec bookstack-db bash -c "mysqldump -u root -p\$MYSQL_ROOT_PASSWORD \$MYSQL_DATABASE" > backup-$(date +%Y%m%d).sql
|
||||
```
|
||||
|
||||
#### Backup Named Volumes
|
||||
|
||||
```bash
|
||||
# Backup BookStack data volume
|
||||
docker run --rm \
|
||||
-v bookstack_data:/data \
|
||||
-v $(pwd):/backup \
|
||||
alpine tar czf /backup/bookstack-data-$(date +%Y%m%d).tar.gz /data
|
||||
|
||||
# Backup database volume
|
||||
docker run --rm \
|
||||
-v bookstack_db:/data \
|
||||
-v $(pwd):/backup \
|
||||
alpine tar czf /backup/bookstack-db-$(date +%Y%m%d).tar.gz /data
|
||||
```
|
||||
|
||||
See `VOLUMES.md` for restore procedures
|
||||
|
||||
### Restore Database
|
||||
|
||||
```bash
|
||||
# Import database
|
||||
docker exec -i bookstack-db mysql -u root -p$MYSQL_ROOT_PASSWORD $DB_DATABASE < backup-20241030.sql
|
||||
```
|
||||
|
||||
### Access Container Shell
|
||||
|
||||
```bash
|
||||
# BookStack container
|
||||
docker exec -it bookstack bash
|
||||
|
||||
# Database container
|
||||
docker exec -it bookstack-db bash
|
||||
```
|
||||
|
||||
### Change APP_URL
|
||||
|
||||
If you change `APP_URL` in `.env`, update the database:
|
||||
|
||||
```bash
|
||||
docker exec -it bookstack php /app/www/artisan bookstack:update-url \
|
||||
https://old-domain.com \
|
||||
https://new-domain.com
|
||||
```
|
||||
|
||||
Then restart:
|
||||
|
||||
```bash
|
||||
docker compose restart bookstack
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Container won't start
|
||||
|
||||
```bash
|
||||
# Check logs
|
||||
docker compose logs bookstack
|
||||
|
||||
# Verify .env exists and is valid
|
||||
cat .env
|
||||
|
||||
# Check file permissions
|
||||
ls -la bookstack_data/
|
||||
```
|
||||
|
||||
### Database connection failed
|
||||
|
||||
```bash
|
||||
# Verify database is running
|
||||
docker compose ps
|
||||
|
||||
# Check database logs
|
||||
docker compose logs bookstack-db
|
||||
|
||||
# Test database connection
|
||||
docker exec -it bookstack-db mysql -u $DB_USERNAME -p$DB_PASSWORD
|
||||
```
|
||||
|
||||
### Permission errors
|
||||
|
||||
The linuxserver.io images handle permissions automatically using `PUID`/`PGID`.
|
||||
|
||||
```bash
|
||||
# Check your UID/GID
|
||||
id
|
||||
|
||||
# Update .env with correct PUID/PGID
|
||||
nano .env
|
||||
|
||||
# Recreate containers
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
### Can't access via domain
|
||||
|
||||
```bash
|
||||
# Verify container is on caddynet
|
||||
docker inspect bookstack | grep caddynet
|
||||
|
||||
# Check Caddy config
|
||||
cat ../server-package/deckard/caddy/sites/wiki.tss-hd.de
|
||||
|
||||
# Reload Caddy
|
||||
cd ../server-package/deckard/caddy
|
||||
docker compose restart caddy
|
||||
```
|
||||
|
||||
### Clear cache
|
||||
|
||||
```bash
|
||||
docker exec bookstack php /app/www/artisan cache:clear
|
||||
docker exec bookstack php /app/www/artisan config:clear
|
||||
```
|
||||
|
||||
## Differences from DIY Setup
|
||||
|
||||
Using linuxserver.io image instead of building from source:
|
||||
|
||||
| Feature | DIY Build | linuxserver.io |
|
||||
|---------|-----------|----------------|
|
||||
| **Maintenance** | Manual updates | `docker compose pull` |
|
||||
| **Setup** | Build from source | Pull pre-built image |
|
||||
| **PHP/Composer** | Install on host | Included in image |
|
||||
| **Permissions** | Manual `chown` | Automatic via PUID/PGID |
|
||||
| **Updates** | Manual git pull + rebuild | Pull new image |
|
||||
| **Support** | Self-support | linuxserver.io community |
|
||||
|
||||
## Security Notes
|
||||
|
||||
✅ No secrets in docker-compose files
|
||||
✅ All configuration in `.env`
|
||||
✅ `.env` should have restricted permissions (600)
|
||||
✅ Change default admin credentials immediately
|
||||
✅ Use strong passwords for DB_PASSWORD and MYSQL_ROOT_PASSWORD
|
||||
✅ Regular backups recommended
|
||||
✅ Keep images updated with `docker compose pull`
|
||||
|
||||
## Links
|
||||
|
||||
- [BookStack Documentation](https://www.bookstackapp.com/docs/)
|
||||
- [linuxserver.io BookStack](https://docs.linuxserver.io/images/docker-bookstack/)
|
||||
- [BookStack GitHub](https://github.com/BookStackApp/BookStack)
|
||||
- [linuxserver.io](https://www.linuxserver.io/)
|
||||
33
deckard/bookstack/bookstack.env.example
Normal file
33
deckard/bookstack/bookstack.env.example
Normal file
@@ -0,0 +1,33 @@
|
||||
# BookStack Application Configuration
|
||||
# This file is mounted to /config/www/.env inside the container
|
||||
# ONLY include BookStack-specific settings here
|
||||
|
||||
# ============================================
|
||||
# Application Settings
|
||||
# ============================================
|
||||
|
||||
APP_DEBUG=false
|
||||
APP_ENV=production
|
||||
APP_LANG=en
|
||||
APP_TIMEZONE=Europe/Berlin
|
||||
|
||||
# ============================================
|
||||
# Mail Settings - Microsoft 365
|
||||
# ============================================
|
||||
|
||||
MAIL_MAILER=smtp
|
||||
MAIL_HOST=smtp-hve.office365.com
|
||||
MAIL_PORT=587
|
||||
MAIL_ENCRYPTION=tls
|
||||
MAIL_USERNAME=noreply@tss-hd.de
|
||||
MAIL_PASSWORD=
|
||||
MAIL_FROM=noreply@tss-hd.de
|
||||
MAIL_FROM_NAME="TSS Wiki (Testing)"
|
||||
|
||||
# ============================================
|
||||
# Storage & Cache
|
||||
# ============================================
|
||||
|
||||
STORAGE_TYPE=local_secure
|
||||
SESSION_DRIVER=file
|
||||
CACHE_DRIVER=file
|
||||
33
deckard/bookstack/bookstack.testing.env
Normal file
33
deckard/bookstack/bookstack.testing.env
Normal file
@@ -0,0 +1,33 @@
|
||||
# BookStack Application Configuration
|
||||
# This file is mounted to /config/www/.env inside the container
|
||||
# ONLY include BookStack-specific settings here
|
||||
|
||||
# ============================================
|
||||
# Application Settings
|
||||
# ============================================
|
||||
|
||||
APP_DEBUG=false
|
||||
APP_ENV=production
|
||||
APP_LANG=en
|
||||
APP_TIMEZONE=Europe/Berlin
|
||||
|
||||
# ============================================
|
||||
# Mail Settings - Microsoft 365
|
||||
# ============================================
|
||||
|
||||
MAIL_MAILER=smtp
|
||||
MAIL_HOST=smtp-hve.office365.com
|
||||
MAIL_PORT=587
|
||||
MAIL_ENCRYPTION=tls
|
||||
MAIL_USERNAME=noreply@tss-hd.de
|
||||
MAIL_PASSWORD=
|
||||
MAIL_FROM=noreply@tss-hd.de
|
||||
MAIL_FROM_NAME="TSS Wiki (Testing)"
|
||||
|
||||
# ============================================
|
||||
# Storage & Cache
|
||||
# ============================================
|
||||
|
||||
STORAGE_TYPE=local_secure
|
||||
SESSION_DRIVER=file
|
||||
CACHE_DRIVER=file
|
||||
60
deckard/bookstack/docker-compose.testing.yml
Normal file
60
deckard/bookstack/docker-compose.testing.yml
Normal file
@@ -0,0 +1,60 @@
|
||||
# Local testing configuration
|
||||
# - NO Caddy reverse proxy
|
||||
# - NO HTTPS
|
||||
# - Uses testing env vars
|
||||
# Access via http://localhost:9000
|
||||
|
||||
networks:
|
||||
bookstack:
|
||||
external: false
|
||||
caddynet:
|
||||
external: true
|
||||
|
||||
|
||||
volumes:
|
||||
bookstack-config:
|
||||
bookstack-db-data:
|
||||
|
||||
services:
|
||||
bookstack:
|
||||
image: lscr.io/linuxserver/bookstack:latest
|
||||
container_name: bookstack
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- PUID=${PUID}
|
||||
- PGID=${PGID}
|
||||
- TZ=${TZ}
|
||||
- DB_HOST=bookstack-db
|
||||
- DB_PORT=3306
|
||||
- DB_USERNAME=${DB_USERNAME}
|
||||
- DB_PASSWORD=${DB_PASSWORD}
|
||||
- DB_DATABASE=${DB_DATABASE}
|
||||
- APP_URL=${APP_URL}
|
||||
- APP_KEY=${APP_KEY}
|
||||
networks:
|
||||
- bookstack
|
||||
- caddynet
|
||||
ports:
|
||||
- "9000:80"
|
||||
volumes:
|
||||
- bookstack-config:/config
|
||||
- ./bookstack.testing.env:/config/www/.env:ro
|
||||
depends_on:
|
||||
- bookstack-db
|
||||
|
||||
bookstack-db:
|
||||
image: lscr.io/linuxserver/mariadb:latest
|
||||
container_name: bookstack-db-testing
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- PUID=${PUID}
|
||||
- PGID=${PGID}
|
||||
- TZ=${TZ}
|
||||
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
|
||||
- MYSQL_DATABASE=${DB_DATABASE}
|
||||
- MYSQL_USER=${DB_USERNAME}
|
||||
- MYSQL_PASSWORD=${DB_PASSWORD}
|
||||
networks:
|
||||
- bookstack
|
||||
volumes:
|
||||
- bookstack-db-data:/var/lib/mysql
|
||||
58
deckard/bookstack/docker-compose.yml
Normal file
58
deckard/bookstack/docker-compose.yml
Normal file
@@ -0,0 +1,58 @@
|
||||
# Local testing configuration
|
||||
# - NO Caddy reverse proxy
|
||||
# - NO HTTPS
|
||||
# - Uses testing env vars
|
||||
# Access via http://localhost:9000
|
||||
|
||||
networks:
|
||||
bookstack:
|
||||
external: false
|
||||
caddynet:
|
||||
external: true
|
||||
|
||||
|
||||
volumes:
|
||||
bookstack-config:
|
||||
bookstack-db-data:
|
||||
|
||||
services:
|
||||
bookstack:
|
||||
image: lscr.io/linuxserver/bookstack:latest
|
||||
container_name: bookstack
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- PUID=${PUID}
|
||||
- PGID=${PGID}
|
||||
- TZ=${TZ}
|
||||
- DB_HOST=bookstack-db
|
||||
- DB_PORT=3306
|
||||
- DB_USERNAME=${DB_USERNAME}
|
||||
- DB_PASSWORD=${DB_PASSWORD}
|
||||
- DB_DATABASE=${DB_DATABASE}
|
||||
- APP_URL=${APP_URL}
|
||||
- APP_KEY=${APP_KEY}
|
||||
networks:
|
||||
- bookstack
|
||||
- caddynet
|
||||
volumes:
|
||||
- bookstack-config:/config
|
||||
- ./bookstack.env:/config/www/.env:ro
|
||||
depends_on:
|
||||
- bookstack-db
|
||||
|
||||
bookstack-db:
|
||||
image: lscr.io/linuxserver/mariadb:latest
|
||||
container_name: bookstack-db-testing
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- PUID=${PUID}
|
||||
- PGID=${PGID}
|
||||
- TZ=${TZ}
|
||||
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
|
||||
- MYSQL_DATABASE=${DB_DATABASE}
|
||||
- MYSQL_USER=${DB_USERNAME}
|
||||
- MYSQL_PASSWORD=${DB_PASSWORD}
|
||||
networks:
|
||||
- bookstack
|
||||
volumes:
|
||||
- bookstack-db-data:/var/lib/mysql
|
||||
9
deckard/caddy/sites/wiki.tss-hd.de
Normal file
9
deckard/caddy/sites/wiki.tss-hd.de
Normal file
@@ -0,0 +1,9 @@
|
||||
https://www.wiki.tss-hd.de {
|
||||
redir https://wiki.tss-hd.de{uri}
|
||||
}
|
||||
|
||||
https://wiki.tss-hd.de {
|
||||
reverse_proxy bookstack:9000 {
|
||||
flush_interval -1
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user