--- created: 2025-11-02 10:48 updated: 2025-11-11 16:24 --- # TrueNAS Quick Reference ## Current Status ✅ **All services operational:** - Traefik (reverse proxy with SSL) - Gitea (git service) - Servarr stack (media automation) --- ## Common Commands ### Docker Management ```bash # View running containers docker ps # View all containers (including stopped) docker ps -a # View logs docker logs gitea -f # Follow logs docker logs traefik --tail 50 # Last 50 lines # Restart containers docker restart gitea docker restart traefik # Stop/Start with docker-compose cd /mnt/tank/stacks/gitea docker compose down docker compose up -d # Update containers docker compose pull docker compose up -d # Remove unused images docker image prune -a ``` ### TrueNAS Storage ```bash # Check pool status zpool status # List datasets zfs list # Create snapshot zfs snapshot [pool]/docker/gitea@$(date +%Y%m%d) # List snapshots zfs list -t snapshot # Restore from snapshot zfs rollback [pool]/docker/gitea@20250125 ``` ### Network Troubleshooting ```bash # Check open ports netstat -tulpn | grep LISTEN # Test external connectivity curl -I https://git.yourdomain.com # Test DNS nslookup git.yourdomain.com # Test port forwarding nc -zv git.yourdomain.com 2222 # Check public IP curl ifconfig.me ``` ### Gitea Specific ```bash # Enter Gitea container docker exec -it gitea sh # Gitea CLI commands (inside container) gitea admin user list gitea admin user create --username newuser --email user@example.com --password changeme gitea dump # Create backup # View Gitea config docker exec gitea cat /data/gitea/conf/app.ini ``` ### Traefik Specific ```bash # View Traefik config docker exec traefik cat /traefik.yml # Check certificate docker exec traefik ls -la /letsencrypt # Restart Traefik to reload config docker restart traefik ``` --- ## File Locations ### On TrueNAS Host ``` /mnt/tank/stacks/ ├── traefik/ │ ├── docker-compose.yml │ ├── traefik.yml │ └── letsencrypt/ │ └── acme.json ├── gitea/ │ ├── docker-compose.yml │ └── data/ │ ├── git/ │ │ └── repositories/ │ ├── gitea/ │ │ └── conf/ │ │ └── app.ini │ └── gitea.db └── servarr/ └── docker-compose.yml ``` ### Important Config Files - **Traefik config:** `/mnt/tank/stacks/traefik/traefik.yml` - **Gitea config:** `/mnt/tank/stacks/gitea/data/gitea/conf/app.ini` - **Gitea repos:** `/mnt/tank/stacks/gitea/data/git/repositories/` - **SSL certs:** `/mnt/tank/stacks/traefik/letsencrypt/acme.json` --- ## Quick Checks ### Is Everything Running? ```bash docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" ``` Expected output: ``` NAMES STATUS PORTS gitea Up 2 days 0.0.0.0:2222->22/tcp, 3000/tcp traefik Up 2 days 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp ``` ### Check Certificate Expiry ```bash echo | openssl s_client -servername git.yourdomain.com -connect git.yourdomain.com:443 2>/dev/null | openssl x509 -noout -dates ``` ### Disk Usage ```bash # Docker disk usage docker system df # Dataset usage zfs list | grep docker ``` --- ## Backup Commands ### Quick Gitea Backup ```bash # Create backup docker exec gitea gitea dump -c /data/gitea/conf/app.ini -f /data/gitea-backup-$(date +%Y%m%d).zip # Copy backup off server docker cp gitea:/data/gitea-backup-$(date +%Y%m%d).zip /mnt/tank/backups/ ``` ### Snapshot Entire Stacks Dataset ```bash # Create snapshot zfs snapshot tank/stacks@backup-$(date +%Y%m%d) # Send to backup location zfs send tank/stacks@backup-$(date +%Y%m%d) | ssh backup-server "zfs recv backup/truenas-stacks" ``` --- ## Git Client Setup ### SSH Config (~/.ssh/config) ``` Host git.yourdomain.com HostName git.yourdomain.com Port 2222 User git IdentityFile ~/.ssh/id_ed25519 ``` ### Common Git Operations ```bash # Clone via SSH git clone git@git.yourdomain.com:username/repo.git # Clone via HTTPS git clone https://git.yourdomain.com/username/repo.git # Add remote to existing repo git remote add origin git@git.yourdomain.com:username/repo.git # Push git push -u origin main # Test SSH connection ssh -T git@git.yourdomain.com ``` --- ## Maintenance Schedule ### Weekly - [ ] Check container logs for errors - [ ] Verify backups completed ### Monthly - [ ] Update Docker containers - [ ] Check disk usage - [ ] Review Gitea security settings ### Quarterly - [ ] Test disaster recovery (restore from backup) - [ ] Review access logs - [ ] Update TrueNAS Scale --- ## Emergency Procedures ### Container Won't Start ```bash # Check logs docker logs gitea --tail 100 # Remove and recreate cd /mnt/tank/stacks/gitea docker compose down docker compose up -d ``` ### Lost SSL Certificate ```bash # Remove acme.json to force renewal rm /mnt/tank/stacks/traefik/letsencrypt/acme.json docker restart traefik # Wait a few minutes and check docker logs traefik | grep -i certificate ``` ### Corrupted Database ```bash # Stop Gitea cd /mnt/tank/stacks/gitea docker compose down # Restore from snapshot zfs rollback tank/stacks/gitea@[snapshot-name] # Or restore from Gitea backup cd /mnt/tank/stacks/gitea/data unzip gitea-backup-20250125.zip # Extract files to appropriate locations # Restart docker compose up -d ``` --- ## Performance Monitoring ```bash # Container stats docker stats # TrueNAS resource usage top htop # If installed # Check I/O iostat -x 5 ``` --- ## Useful URLs When services are running: - **Gitea:** https://git.yourdomain.com - **Traefik Dashboard:** https://traefik.yourdomain.com (if configured) - **TrueNAS UI:** https://[truenas-ip] --- ## Environment Variables Reference Common environment variables for Gitea: ```yaml - GITEA__server__DOMAIN=git.yourdomain.com - GITEA__server__ROOT_URL=https://git.yourdomain.com - GITEA__server__SSH_PORT=2222 - GITEA__service__DISABLE_REGISTRATION=true - GITEA__database__DB_TYPE=sqlite3 - GITEA__repository__ENABLE_PUSH_CREATE_USER=true - GITEA__security__INSTALL_LOCK=true ``` See [Gitea Config Cheat Sheet](https://docs.gitea.io/en-us/config-cheat-sheet/) for full list.