Compare commits
3 Commits
6894c5f175
...
d0727bd8a7
| Author | SHA1 | Date | |
|---|---|---|---|
| d0727bd8a7 | |||
| 7eaf16f53e | |||
| bab97f7166 |
19
TODO.md
19
TODO.md
@@ -23,7 +23,7 @@
|
||||
- [ ] WireGuard VPN server configuration
|
||||
- [ ] UFW firewall setup and rules
|
||||
- [ ] fail2ban for intrusion prevention
|
||||
- [ ] Security enhancement for VNC connections (in the meantime: only run the vnc service for short time while we are using it)
|
||||
- [x] VNC setup for remote desktop access *(TigerVNC installed, enabled temporarily via SSH when needed)*
|
||||
|
||||
## Git & Development
|
||||
- [x] Gitea Docker container setup *(completed - running on port 3000)*
|
||||
@@ -91,9 +91,8 @@ Lower priority - mostly using SSH or TTY anyways
|
||||
- [x] Shared media folders with Copyparty (Music, Videos, shared)
|
||||
- [ ] Set up self-hosted chat server (Matrix or Mattermost)
|
||||
- [ ] Install monitoring and management tools *(in progress)*
|
||||
- [ ] Portainer (Docker management with built-in auth)
|
||||
- [ ] Glances (system monitoring with nginx basic auth)
|
||||
- [ ] Cockpit (system administration with PAM auth)
|
||||
- [x] Portainer (Docker management with built-in auth)
|
||||
- [x] Glances (system monitoring with nginx basic auth)
|
||||
- [ ] lazydocker (terminal Docker management)
|
||||
- [ ] Configure nginx basic auth for Glances endpoint
|
||||
- [ ] Update nginx reverse proxy config for new admin services
|
||||
@@ -101,14 +100,16 @@ Lower priority - mostly using SSH or TTY anyways
|
||||
- [ ] Set up Nextcloud for advanced file synchronization features
|
||||
- Copyparty covers basic file sharing needs
|
||||
- [x] Set up reverse proxy with SSL certificates *(completed - HTTPS working with auto-renewal)*
|
||||
- [ ] Make sure all services are dockerized unless we have a good reason not to
|
||||
- [x] Make sure all services are dockerized unless we have a good reason not to
|
||||
- Gitea: ✅ Docker
|
||||
- Jellyfin: ✅ Docker
|
||||
- Copyparty: ❌ systemd service (consider dockerizing)
|
||||
- Nginx: ❌ system package (fine as-is for reverse proxy)
|
||||
- qBittorrent: ✅ Docker
|
||||
- Portainer: ✅ Docker
|
||||
- Glances: ❌ system package (web server mode)
|
||||
- Cockpit: ❌ system package (system integration required)
|
||||
- Copyparty: ✅ Docker
|
||||
- Glances: ❌ systemd (needs full system access for accurate monitoring)
|
||||
- Netdata: ❌ systemd (needs full system access for accurate monitoring)
|
||||
- Syncthing: ❌ systemd (Docker permission issues with config directory)
|
||||
- Nginx: ❌ system package (reverse proxy, system integration required)
|
||||
|
||||
## Hardware & Troubleshooting
|
||||
- [ ] Fix bluetooth audio connectivity issues
|
||||
|
||||
@@ -1,77 +0,0 @@
|
||||
# Copyparty Configuration for Homelab
|
||||
# DEPLOYMENT LOCATION: /home/hoborg/.config/copyparty/copyparty.conf
|
||||
|
||||
[global]
|
||||
# Network settings
|
||||
i: 127.0.0.1
|
||||
p: 8082
|
||||
rp-loc: /files
|
||||
|
||||
# Reverse proxy configuration
|
||||
rproxy: -1
|
||||
|
||||
# Security and features
|
||||
usernames
|
||||
chpw
|
||||
chpw-db: /home/hoborg/.config/copyparty/passwords.json
|
||||
e2dsa
|
||||
dedup
|
||||
dotpart
|
||||
|
||||
# Upload settings
|
||||
u2ts: c
|
||||
chmod-f: 644
|
||||
chmod-d: 755
|
||||
|
||||
# Server name
|
||||
name: homelab-files
|
||||
|
||||
[accounts]
|
||||
guest: SecurePass2024!
|
||||
hoborg: AdminPass2024!
|
||||
|
||||
[/shared]
|
||||
/mnt/nas/shared
|
||||
accs:
|
||||
rw: guest
|
||||
rwmd: hoborg
|
||||
|
||||
[/documents]
|
||||
/mnt/nas/documents
|
||||
accs:
|
||||
rwmd: hoborg
|
||||
|
||||
[/music]
|
||||
/mnt/nas/music
|
||||
accs:
|
||||
rw: guest
|
||||
rwmd: hoborg
|
||||
|
||||
[/videos]
|
||||
/mnt/nas/videos
|
||||
accs:
|
||||
rw: guest
|
||||
rwmd: hoborg
|
||||
|
||||
[/private]
|
||||
/mnt/nas/private
|
||||
accs:
|
||||
rwmd: hoborg
|
||||
|
||||
[/pictures]
|
||||
/mnt/nas/pictures
|
||||
accs:
|
||||
rw: guest
|
||||
rwmd: hoborg
|
||||
|
||||
[/installers]
|
||||
/mnt/nas/installers
|
||||
accs:
|
||||
rw: guest
|
||||
rwmd: hoborg
|
||||
|
||||
[/torrent]
|
||||
/mnt/nas/torrent
|
||||
accs:
|
||||
rw: guest
|
||||
rwmd: hoborg
|
||||
90
config/docker/copyparty/docker-compose.yml
Normal file
90
config/docker/copyparty/docker-compose.yml
Normal file
@@ -0,0 +1,90 @@
|
||||
# Copyparty Docker Compose Configuration
|
||||
# Deploy with: sudo mkdir -p /opt/docker/copyparty && sudo cp config/docker/copyparty/docker-compose.yml /opt/docker/copyparty/
|
||||
# Start with: cd /opt/docker/copyparty && sudo docker-compose up -d
|
||||
|
||||
# COPYPARTY CONFIGURATION
|
||||
# - File server with upload/download capabilities
|
||||
# - WebDAV support for mobile and desktop clients
|
||||
# - Bound to localhost only (reverse proxy required)
|
||||
# - Configuration stored in repo at config/copyparty/copyparty.conf
|
||||
|
||||
services:
|
||||
copyparty:
|
||||
image: copyparty/ac:latest
|
||||
container_name: copyparty
|
||||
restart: unless-stopped
|
||||
|
||||
# Environment
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Europe/Budapest
|
||||
|
||||
# Network - bind to localhost for security
|
||||
ports:
|
||||
- "127.0.0.1:8082:3923" # Web UI (reverse proxy only)
|
||||
|
||||
# Volume mounts
|
||||
volumes:
|
||||
# Password database
|
||||
- /home/hoborg/.config/copyparty/passwords.json:/home/hoborg/.config/copyparty/passwords.json
|
||||
# NAS storage volumes (mapped to container paths)
|
||||
- /mnt/nas/shared:/w/shared:rw
|
||||
- /mnt/nas/documents:/w/documents:rw
|
||||
- /mnt/nas/music:/w/music:rw
|
||||
- /mnt/nas/videos:/w/videos:rw
|
||||
- /mnt/nas/private:/w/private:rw
|
||||
- /mnt/nas/pictures:/w/pictures:rw
|
||||
- /mnt/nas/installers:/w/installers:rw
|
||||
- /mnt/nas/torrent:/w/torrent:rw
|
||||
|
||||
# Command with inline volume configuration using -v flag
|
||||
command:
|
||||
- --rp-loc=/files
|
||||
- --name=homelab-files
|
||||
- --usernames
|
||||
- --chpw
|
||||
- --chpw-db=/home/hoborg/.config/copyparty/passwords.json
|
||||
- --xff-src=172.0.0.0/8
|
||||
- --rproxy=-1
|
||||
- -e2dsa
|
||||
- --dedup
|
||||
- --dotpart
|
||||
- -a
|
||||
- hoborg:AdminPass2024!
|
||||
- -a
|
||||
- guest:SecurePass2024!
|
||||
- -v
|
||||
- /w/shared:shared:r:rw,guest:rwmd,hoborg
|
||||
- -v
|
||||
- /w/documents:documents:rwmd,hoborg
|
||||
- -v
|
||||
- /w/music:music:r:rw,guest:rwmd,hoborg
|
||||
- -v
|
||||
- /w/videos:videos:r:rw,guest:rwmd,hoborg
|
||||
- -v
|
||||
- /w/private:private:rwmd,hoborg
|
||||
- -v
|
||||
- /w/pictures:pictures:r:rw,guest:rwmd,hoborg
|
||||
- -v
|
||||
- /w/installers:installers:r:rw,guest:rwmd,hoborg
|
||||
- -v
|
||||
- /w/torrent:torrent:r:rw,guest:rwmd,hoborg
|
||||
|
||||
# Resource limits
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '1.0'
|
||||
memory: 1G
|
||||
reservations:
|
||||
cpus: '0.25'
|
||||
memory: 256M
|
||||
|
||||
# Health check
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3923/files/"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 30s
|
||||
@@ -29,6 +29,13 @@ create_symlink() {
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Create parent directory if it doesn't exist
|
||||
local link_dir=$(dirname "$link")
|
||||
if [ ! -d "$link_dir" ]; then
|
||||
echo "Creating directory: $link_dir"
|
||||
mkdir -p "$link_dir"
|
||||
fi
|
||||
|
||||
# Backup existing file if it's not already a symlink
|
||||
if [ -f "$link" ] && [ ! -L "$link" ]; then
|
||||
backup="${link}.backup.$(date +%Y%m%d_%H%M%S)"
|
||||
@@ -73,11 +80,31 @@ create_symlink "Portainer docker-compose" \
|
||||
"$REPO_ROOT/config/docker/portainer/docker-compose.yml" \
|
||||
"/opt/docker/portainer/docker-compose.yml"
|
||||
|
||||
# Copyparty docker-compose.yml
|
||||
create_symlink "Copyparty docker-compose" \
|
||||
"$REPO_ROOT/config/docker/copyparty/docker-compose.yml" \
|
||||
"/opt/docker/copyparty/docker-compose.yml"
|
||||
|
||||
# Glances docker-compose.yml
|
||||
create_symlink "Glances docker-compose" \
|
||||
"$REPO_ROOT/config/docker/glances/docker-compose.yml" \
|
||||
"/opt/docker/glances/docker-compose.yml"
|
||||
|
||||
# Syncthing docker-compose.yml
|
||||
create_symlink "Syncthing docker-compose" \
|
||||
"$REPO_ROOT/config/docker/syncthing/docker-compose.yml" \
|
||||
"/opt/docker/syncthing/docker-compose.yml"
|
||||
|
||||
# Docker daemon config
|
||||
create_symlink "Docker daemon config" \
|
||||
"$REPO_ROOT/config/docker/daemon.json" \
|
||||
"/etc/docker/daemon.json"
|
||||
|
||||
# Landing page
|
||||
create_symlink "Landing page" \
|
||||
"$REPO_ROOT/config/www/index.html" \
|
||||
"/var/www/homelab/index.html"
|
||||
|
||||
echo "==================================================================="
|
||||
echo "Summary"
|
||||
echo "==================================================================="
|
||||
@@ -96,5 +123,8 @@ echo " ls -l /opt/docker/gitea/docker-compose.yml"
|
||||
echo " ls -l /opt/docker/jellyfin/docker-compose.yml"
|
||||
echo " ls -l /opt/docker/qbittorrent/docker-compose.yml"
|
||||
echo " ls -l /opt/docker/portainer/docker-compose.yml"
|
||||
echo " ls -l /opt/docker/copyparty/docker-compose.yml"
|
||||
echo " ls -l /opt/docker/glances/docker-compose.yml"
|
||||
echo " ls -l /opt/docker/syncthing/docker-compose.yml"
|
||||
echo " ls -l /etc/docker/daemon.json"
|
||||
echo ""
|
||||
|
||||
Reference in New Issue
Block a user