Nixtcloud turns a Raspberry Pi or NanoPi NEO3 into a privacy-first, zero-config personal cloud β powered by NixOS, Nextcloud, and peer-to-peer remote access via Holesail. Built for the self-hosting crowd who want full control without constant babysitting.
One command. Full cloud. Private, persistent, and portable.
- βοΈ Full Nextcloud stack, pre-configured
- π End-to-end encrypted remote access, no port forwarding
- π¦ Plug in USB drives, they're auto-mounted & usable instantly
- π Self-healing system with daily reboots and weekly updates
- π± Remote access by QR code, using Holesail
Perfect for digital minimalists, privacy purists, and anyone fed up with Google Drive.
From NixOS:
nix build --system aarch64-linux github:jjacke13/nixtcloud#packages.aarch64-linux.Rpi4From macOS/Linux:
nix build --extra-experimental-features nix-command --extra-experimental-features flakes \
--system aarch64-linux github:jjacke13/nixtcloud#packages.aarch64-linux.Rpi4nix build --system aarch64-linux github:jjacke13/nixtcloud#packages.aarch64-linux.Rpi5nix build --system aarch64-linux github:jjacke13/nixtcloud#packages.aarch64-linux.Nanopi-neo3Note for NanoPi NEO3: Uses a custom minimal kernel (6.18.3) for faster builds and smaller image size (~2.7GB).
Flash the resulting image to an SD card, boot your device, and visit https://nixtcloud.local.
Hardware:
- Raspberry Pi 4 or 5 (β₯ 4GB RAM recommended) - supports WiFi + Ethernet
- OR NanoPi NEO3 (2GB RAM) - Ethernet only, no WiFi
- SD card (16GB+)
- Ethernet connection
- Optional: USB drives for storage expansion
Software:
After flashing and booting your Raspberry Pi:
-
Power On & Wait
The first boot configures the system β this can take up to 5 minutes. DO NOT interrupt it. The Pi will reboot automatically when ready. -
Connect via Ethernet Make sure your device is connected to your local network via Ethernet. WiFi is supported on Raspberry Pi only (not available on NanoPi NEO3). WiFi setup requires editing
configuration.nixand rebuilding. -
Detect Hostname
From a computer on the same network, open your browser and go to: https://nixtcloud.localIf that doesn't work:
- Try
ping nixtcloud.local - Or, find the Pi's IP via your router and visit
https://<ip-address>
- Try
-
Login to Nextcloud
- Username:
admin - Password:
admin
β οΈ Change this password immediately after first login.
- Username:
-
Insert USB Storage (Optional)
If you want to expand storage:- Plug in a USB drive
- Wait ~30 seconds
- It will show up in Nextcloud as external storage
- SSH root login disabled by default
- Firewall restricts all but essential ports
- Remote access is encrypted, zero-config, and QR-based
- Weekly auto-updates (or on demand)
- Scheduled maintenance tasks
- Automatic check and apply of updates and then reboot
- USB drives auto-mount after 30 seconds
- "Magic files" in Nextcloud let you trigger actions like reboot or regenerate P2P credentials by just deleting a file.
- Works with ext4, exFAT, FAT32, NTFS
- Auto-detected and mounted
- Appears in Nextcloud as external storage
- Supports multiple partitions per device
Using Holesail:
- Encrypted P2P tunnel
- Credentials delivered as
remote.txtand a QR image inside your Nextcloud - Public folder sharing via separate connection string
Want to access your files while traveling without exposing ports? Done.
Examples (in configuration.nix):
# WiFi (Raspberry Pi only - NanoPi NEO3 has no WiFi)
networking.wireless.enable = true;
networking.wireless.networks = {
YourSSID = { psk = "YourPassword"; };
};
# Disable daily reboots
services.cron.systemCronJobs = [];
# Set timezone
time.timeZone = "Europe/Berlin";- NixOS for immutability and reproducibility
- Nextcloud 32
- Holesail for P2P remote access
- Custom systemd services:
startup.servicemymnt.servicep2pmagic.servicep2public.servicerebooter.service
graph TD
A[nextcloud-setup] --> B[startup.service]
B --> C[mymnt.service]
B --> D[p2pmagic.service]
B --> E[p2public.service]
B --> F[rebooter.service]
Can't access nixtcloud.local?
- Try accessing the Pi's IP address directly
- Ensure
avahi/mDNS is working on your network
USB drive not showing up?
- Check if formatted correctly
- Wait 30-45 seconds after plugging in
- Run:
journalctl -u mymnt.service
Remote access fails?
- Make sure Holesail app is installed and working
- Double-check the QR or connection string
git clone https://github.com/jjacke13/nixtcloud.git
cd nixtcloud
# Build for Raspberry Pi 4
nix build .#packages.aarch64-linux.Rpi4
# Build for Raspberry Pi 5
nix build .#packages.aarch64-linux.Rpi5
# Build for NanoPi NEO3 (faster build, minimal kernel)
nix build .#packages.aarch64-linux.Nanopi-neo3(