Add initial pyproject.toml for dj-beets project with dependencies and metadata
This commit is contained in:
@@ -0,0 +1,196 @@
|
||||
````markdown
|
||||
# infra-nix: NixOS Infrastructure
|
||||
|
||||
Dieses Repository enthält die deklarative NixOS-Infrastruktur für:
|
||||
- **fileserver**: SMB, FileBrowser, rclone-Backup, DJ-Beets Musik-Library
|
||||
- **gateway**: AdGuardHome (DNS), Caddy (Reverse Proxy)
|
||||
|
||||
## Quick Deploy
|
||||
|
||||
```bash
|
||||
# Alle Systeme deployen
|
||||
make deploy
|
||||
|
||||
# Nur fileserver deployen
|
||||
make deploy-fileserver
|
||||
|
||||
# Nur gateway deployen
|
||||
make deploy-gateway
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## DJ-Beets Projekt (`src/dj-beets/`)
|
||||
|
||||
Dein eigenes Projekt als Beets-Ersatz. Wird beim Deploy auf `/opt/dj-beets` kopiert.
|
||||
|
||||
**Details siehe:** [src/dj-beets/README.md](src/dj-beets/README.md)
|
||||
|
||||
**Workflow:**
|
||||
1. Lokal in `src/dj-beets/` entwickeln
|
||||
2. `make deploy-fileserver` → deployed auf Server
|
||||
3. Auto-Import läuft alle 10 Minuten via Timer
|
||||
|
||||
---
|
||||
|
||||
## Fileserver: rclone + SMB Quickstart
|
||||
|
||||
This guide covers setting up rclone (Google Drive) and setting the SMB password for user `danlin`.
|
||||
|
||||
---
|
||||
|
||||
## rclone (Google Drive)
|
||||
|
||||
The system has `rclone` installed and a systemd job to sync `/data` to a remote named `gdrive`:
|
||||
|
||||
- Service: `rclone-backup.service` (oneshot)
|
||||
- Timer: `rclone-backup.timer` (runs daily 03:00)
|
||||
- Log: `/var/log/rclone-backup.log`
|
||||
|
||||
### 1) Create the remote `gdrive`
|
||||
Run on the fileserver:
|
||||
|
||||
```bash
|
||||
sudo -i
|
||||
rclone config
|
||||
```
|
||||
|
||||
Then:
|
||||
- n) New remote
|
||||
- name: `gdrive`
|
||||
- storage: `drive` (Google Drive)
|
||||
- Use auto config? For headless server choose "No"
|
||||
- Follow the printed instructions using another machine, or run on a desktop and copy the token
|
||||
- Keep defaults unless you need a service account
|
||||
- y) Yes to save
|
||||
|
||||
Verify:
|
||||
```bash
|
||||
rclone lsd gdrive:
|
||||
rclone mkdir gdrive:backup-daten
|
||||
```
|
||||
|
||||
### 2) Test backup manually
|
||||
```bash
|
||||
sudo systemctl start rclone-backup.service
|
||||
sudo journalctl -u rclone-backup -e
|
||||
sudo tail -n 100 /var/log/rclone-backup.log
|
||||
```
|
||||
|
||||
### 3) Check/enable timer
|
||||
```bash
|
||||
systemctl list-timers '*rclone*'
|
||||
sudo systemctl enable --now rclone-backup.timer
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## SMB password for `danlin`
|
||||
|
||||
The share configuration:
|
||||
- Protected share: `daten` → requires user `danlin`
|
||||
- Guest share: `daten-share` → guest access allowed
|
||||
|
||||
Set the Samba password for `danlin` (independent from system login password):
|
||||
|
||||
```bash
|
||||
sudo smbpasswd -a danlin
|
||||
```
|
||||
|
||||
Useful commands:
|
||||
```bash
|
||||
sudo pdbedit -L # list Samba users
|
||||
sudo systemctl status samba
|
||||
sudo journalctl -u samba -e
|
||||
```
|
||||
|
||||
Access examples:
|
||||
- Windows: `\\fileserver\daten` or `\\fileserver\daten-share`
|
||||
- macOS Finder: Go → Connect to Server → `smb://fileserver/daten` or `smb://fileserver/daten-share`
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
- rclone auth on headless: use `rclone authorize 'drive'` on a desktop and paste token
|
||||
- Permissions: ensure `/data/daten` and `/data/daten/share` exist and are writable (`systemd-tmpfiles` creates them)
|
||||
- Firewall: SMB ports 139/445 are open by module config
|
||||
|
||||
````
|
||||
|
||||
---
|
||||
|
||||
## rclone (Google Drive)
|
||||
|
||||
The system has `rclone` installed and a systemd job to sync `/data` to a remote named `gdrive`:
|
||||
|
||||
- Service: `rclone-backup.service` (oneshot)
|
||||
- Timer: `rclone-backup.timer` (runs daily 03:00)
|
||||
- Log: `/var/log/rclone-backup.log`
|
||||
|
||||
### 1) Create the remote `gdrive`
|
||||
Run on the fileserver:
|
||||
|
||||
```bash
|
||||
sudo -i
|
||||
rclone config
|
||||
```
|
||||
|
||||
Then:
|
||||
- n) New remote
|
||||
- name: `gdrive`
|
||||
- storage: `drive` (Google Drive)
|
||||
- Use auto config? For headless server choose "No"
|
||||
- Follow the printed instructions using another machine, or run on a desktop and copy the token
|
||||
- Keep defaults unless you need a service account
|
||||
- y) Yes to save
|
||||
|
||||
Verify:
|
||||
```bash
|
||||
rclone lsd gdrive:
|
||||
rclone mkdir gdrive:backup-daten
|
||||
```
|
||||
|
||||
### 2) Test backup manually
|
||||
```bash
|
||||
sudo systemctl start rclone-backup.service
|
||||
sudo journalctl -u rclone-backup -e
|
||||
sudo tail -n 100 /var/log/rclone-backup.log
|
||||
```
|
||||
|
||||
### 3) Check/enable timer
|
||||
```bash
|
||||
systemctl list-timers '*rclone*'
|
||||
sudo systemctl enable --now rclone-backup.timer
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## SMB password for `danlin`
|
||||
|
||||
The share configuration:
|
||||
- Protected share: `daten` → requires user `danlin`
|
||||
- Guest share: `daten-share` → guest access allowed
|
||||
|
||||
Set the Samba password for `danlin` (independent from system login password):
|
||||
|
||||
```bash
|
||||
sudo smbpasswd -a danlin
|
||||
```
|
||||
|
||||
Useful commands:
|
||||
```bash
|
||||
sudo pdbedit -L # list Samba users
|
||||
sudo systemctl status samba
|
||||
sudo journalctl -u samba -e
|
||||
```
|
||||
|
||||
Access examples:
|
||||
- Windows: `\\fileserver\daten` or `\\fileserver\daten-share`
|
||||
- macOS Finder: Go → Connect to Server → `smb://fileserver/daten` or `smb://fileserver/daten-share`
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
- rclone auth on headless: use `rclone authorize 'drive'` on a desktop and paste token
|
||||
- Permissions: ensure `/data/daten` and `/data/daten/share` exist and are writable (`systemd-tmpfiles` creates them)
|
||||
- Firewall: SMB ports 139/445 are open by module config
|
||||
Reference in New Issue
Block a user