1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# dps — Debian Profile Sync
# Copy to ~/.config/dps/config.toml and fill in your values.
# ── Proxmox connection ────────────────────────────────────────────────────────
[]
= "192.168.1.10" # Proxmox VE hostname or IP
= 8006
= "pve" # Proxmox node name (shown in the web UI)
= false # set true when using a trusted cert
# Authentication — choose ONE of the blocks below.
# Option A: API token (recommended for automation)
[]
= "token"
= "root@pam"
= "dps" # PVE token ID
= "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
# Option B: username + password (comment out the block above, uncomment below)
# [proxmox.auth]
# type = "password"
# user = "root"
# realm = "pam"
# password = "secret"
# ── LXC container ─────────────────────────────────────────────────────────────
[]
= 200 # Proxmox container ID
= "dps-sync"
# Download the template first: pveam download local debian-12-standard_12.7-1_amd64.tar.zst
= "local:vztmpl/debian-12-standard_12.7-1_amd64.tar.zst"
= "local-lvm" # Storage pool for the rootfs disk
= "8G"
= 512 # MB
= 1
# Root password used only during initial container setup, then key-only SSH is enforced.
= "change-me-immediately"
[]
= "vmbr0"
= "dhcp" # "dhcp" or "192.168.1.50/24"
# gateway = "192.168.1.1" # required when ip is static
# ── Profile sync ──────────────────────────────────────────────────────────────
[]
# SSH public key injected into the container during setup.
# Falls back to the first key found in ~/.ssh/ if omitted.
# ssh_public_key_file = "~/.ssh/id_ed25519.pub"
#
# SSH *private* key used to connect to the container after setup.
# ssh_identity_file = "~/.ssh/id_ed25519"
= 22
= "root"
# Paths to sync. `local` supports shell tilde expansion.
# remote is relative to /profiles/<local-username>/ on the container.
[[]]
= "~/.bashrc"
= ".bashrc"
[[]]
= "~/.bash_profile"
= ".bash_profile"
[[]]
= "~/.profile"
= ".profile"
[[]]
= "~/.gitconfig"
= ".gitconfig"
[[]]
= "~/.config/nvim"
= ".config/nvim"
= true # Remove files on the destination that are gone locally
[[]]
= "~/.config/fish"
= ".config/fish"
= true
# rsync --exclude patterns applied globally
= [
".git/",
"__pycache__/",
"*.pyc",
"node_modules/",
".DS_Store",
]
# ── Tailscale (optional) ───────────────────────────────────────────────────────
# Remove or comment out this entire section to disable Tailscale integration.
# When enabled, dps will:
# • Install Tailscale inside the container during `dps setup`
# • Join your tailnet using the auth key below
# • Prefer the Tailscale IP (100.x.x.x) for all push/pull transfers so that
# syncing works from any network without exposing the Proxmox LAN
#
# Generate a reusable auth key at: https://login.tailscale.com/admin/settings/keys
[]
= "tskey-auth-xxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# hostname = "dps-sync" # defaults to container.hostname
# tags = ["tag:sync"] # optional ACL tags
= true
# container_ts_ip is written automatically by `dps setup` — do not set manually