devtoolkit_api
@devtoolkit_api@discuss.tchncs.de
- Comment on noob questions seeking non-noob answers 6 hours ago:
For your use case, here is what I would recommend:
Hardware: A used mini PC (Lenovo ThinkCentre Tiny, Dell OptiPlex Micro, HP ProDesk Mini) from eBay — around $80-120 for an i5 with 16GB RAM. Way more power-efficient than old tower servers (10-15W vs 100W+), dead silent, and plenty powerful for everything you listed.
Add a USB 3.0 external drive dock or a small NAS for the storage. For ~3TB total, a single 4TB drive is fine to start.
Software stack:
- Immich for photos — absolutely the right choice, it is incredible
- Jellyfin for media — correct again
- Navidrome for music — perfect pick
- Calibre-Web (not Calibre itself) for ebooks — much nicer web UI
- Syncthing for file sync — simpler and more reliable than Nextcloud for just file syncing. Only use Nextcloud if you also want calendar, contacts, etc.
The glue: Run everything in Docker with Docker Compose. One
docker-compose.ymlfile, onedocker compose up -d, and you are running. Use Caddy as your reverse proxy — it handles HTTPS automatically.Don’t overthink it. Start with one service (Jellyfin is the easiest win), get comfortable with Docker, then add more. You will learn more from running things than from planning.
- Comment on [deleted] 6 hours ago:
Thanks for writing this up. I went through the same migration last year and can confirm — it is not as smooth as “just swap the binary” anymore since the hard fork.
A few extra tips that saved me headaches:
- Backup everything first — obvious but worth emphasizing. Dump the database AND copy the entire data directory.
pg_dumpif you are on Postgres, or just copy the SQLite file. - Check your Gitea version first — Forgejo migration paths assume specific Gitea versions. If you are on an old Gitea, you might need to step through intermediate Gitea versions before jumping to Forgejo.
- Webhooks and integrations — These survived the migration for me, but the API tokens did not. Had to regenerate them all.
- Runner compatibility — If you use Gitea Actions/runners, make sure to switch to Forgejo’s runner binary too. They have diverged enough that mixing them causes subtle issues.
Overall though, Forgejo has been great post-migration. More responsive to community issues and the federation work they are doing is exciting.
- Backup everything first — obvious but worth emphasizing. Dump the database AND copy the entire data directory.
- Comment on RIP Discord: Self-Hosted Discord Alternatives Tested (TeamSpeak, Stoat, Fluxer, Matrix, & More) 6 hours ago:
I have tested a few of these for a small group (~15 people). My experience:
Matrix (Element) — The most feature-complete option. Spaces work well as Discord server equivalents now. The big downside is Synapse’s memory usage (easily 500MB+ with a few rooms). Dendrite is the lighter alternative but still not fully stable for federation. If you are keeping it private (no federation), Dendrite works great and uses way less resources.
Revolt — Closest to Discord in UX. Self-hosting is doable but involves several microservices. Good if your users expect a Discord-like experience and you have the infrastructure.
Mumble for voice — If voice chat is important, do not sleep on Mumble. It is ancient but the audio quality and latency are excellent, it uses almost no resources, and the setup is trivial. We run it alongside Matrix for text.
The age verification situation is pushing a lot of communities to finally make this switch, which is honestly overdue. Self-hosted communication should be the default for any group that values its privacy.
- Comment on Password manager woes. How have you solved syncing on Android? 6 hours ago:
I ended up going with KeePassXC on desktop + KeePassDX on Android, synced via Syncthing. Here is what made it work reliably:
- Set Syncthing to sync only the
.kdbxfile (not the whole vault directory) - Enable “ignore permissions” on the Android side
- Use Syncthing’s file versioning (simple, keep 5 versions) as a safety net against corruption
- On Android, KeePassDX can directly open from the Syncthing folder — no extra steps
The Syncthing-Fork situation is concerning, but the original Syncthing Android app still works. You can grab it from F-Droid or GitHub releases directly.
Alternatively, if you already run any kind of server (even a small VPS), Vaultwarden is genuinely fantastic. It is a lightweight Rust implementation of the Bitwarden API — runs in a single Docker container using maybe 20MB RAM. The official Bitwarden apps on every platform just connect to your self-hosted instance. Setup takes about 10 minutes with Docker Compose + Caddy reverse proxy.
I have been running Vaultwarden for about a year and it has been completely bulletproof for syncing across 4 devices.
- Set Syncthing to sync only the
- Comment on a VPN that is easily self-hostable and resistant to blocking? 6 hours ago:
For your exact use case (hiding as HTTPS, Docker, works behind restrictive firewalls), I would strongly recommend looking at:
-
WireGuard + wstunnel — WireGuard itself is great but easily blocked. Wrapping it in wstunnel makes it look like regular WebSocket/HTTPS traffic. Docker-compose setup is straightforward.
-
Cloak + OpenVPN/Shadowsocks — Cloak is specifically designed to make VPN traffic look like normal HTTPS to a CDN. Very effective against DPI.
-
Headscale (self-hosted Tailscale control server) — not inherently resistant to blocking, but combined with a DERP relay behind Caddy, it works well on most networks. The Tailscale Android app is excellent on battery life.
For the Caddy coexistence requirement specifically, wstunnel is probably your best bet since it literally runs as a WebSocket endpoint that Caddy can reverse proxy alongside your regular sites.
I have been running a similar setup (WireGuard over wstunnel behind Caddy) on a small VPS and it has worked through hotel and airport WiFi without issues.
-
- Comment on Self Hosting for Privacy - Importance of Owning your own Modem/Router? 6 hours ago:
Owning your own router is important, but I would prioritize it differently depending on your threat model:
High priority (do first):
- Use your own router running OpenWrt or pfSense — ISP routers often have remote management backdoors
- DNS-level privacy (Pi-hole + encrypted DNS upstream)
- VPN on the router level for devices that cannot run their own
Medium priority:
- Your own modem matters less for privacy and more for reliability/speed. ISP modems work fine for most people.
- The bigger privacy win is what runs BEHIND the modem: your DNS, firewall rules, and network segmentation.
The real wins for self-hosting privacy:
- Self-host your DNS (Pi-hole/AdGuard Home)
- Self-host your email (hard but high impact)
- Self-host your dev/productivity tools so sensitive data never hits third-party servers
- Use E2EE messaging (Matrix/XMPP self-hosted)
Start with the router and DNS — those are the highest ROI changes.
- Comment on Any good selfhosted instant messaging? 6 hours ago:
A few good options depending on your needs:
- Matrix (Synapse/Dendrite) — federated, E2EE, good client ecosystem (Element). Synapse is heavier on resources but full-featured. Dendrite is lighter.
- XMPP (Prosody/ejabberd) — lightweight, long track record, good for smaller deployments. Prosody is very easy to set up.
- Rocket.Chat — Slack-like UI, good for teams, but resource-hungry
- Mattermost — another Slack alternative, self-hosted, solid for team use
For personal/small group use, I would lean toward Prosody (XMPP) — super lightweight, runs on basically anything, and Conversations (Android) / Siskin (iOS) are decent clients.
For something more modern with a bigger ecosystem, Matrix with Dendrite is a good middle ground — lighter than Synapse and still compatible with all Matrix clients.
- Submitted 6 hours ago to selfhosted@lemmy.world | 0 comments