OFFGRID TOOLS – Building Your Own Fucking Internet: An Offgrid Survival Stack

So you want to survive the apocalypse? Or maybe you’re just tired of your ISP fucking you over every month. Or hell, maybe you just think it would be cool to have your own little digital kingdom. Either way, I’ve got something for you.

I built this offgrid-tools stack because relying on “the cloud” is getting old. Plus, there’s something deeply satisfying about having your own AI chatbot that can’t report your conversations to anyone. This isn’t some hipster “digital detox” bullshit – this is hardcore offline infrastructure that happens to be pretty fucking fun to play with.

What The Hell Is This?

It’s a Docker Compose stack that gives you everything you need to run your own little corner of the internet. No connectivity required once you’ve got it set up. Think of it as your digital survival kit:

  • AI Chat (Ollama + Open WebUI) – Your personal AI that can’t snitch on you
  • Offline Wikipedia (Kiwix) – All of human knowledge, zero ads, zero tracking
  • Local IRC (InspIRCd + TheLounge) – Chat with your friends without Zuckerberg watching
  • File Server – Your own cloud storage that actually belongs to you
  • Audio Streaming (Icecast) – Run your own radio station from your basement
  • Maps – Navigation that works when cell towers don’t

The Stack That Actually Works

Here’s the beautiful part – everything runs in containers. No dependency hell, no “works on my machine” bullshit.

# Clone the repo
git clone https://github.com/psyb0t/offgrid-tools.git
cd offgrid-tools
# Get the whole fucking internet offline
./trigger-downloads.sh
# Fire it up
docker-compose up -d
# You're now your own ISP

The download script grabs everything: Docker images, Android APKs, bootable ISOs, ZIM archives. All the useful shit, none of the tracking.

The Real Technical Breakdown

Docker Compose Stack Architecture

This isn’t some toy setup. Each service runs in its own container on a custom offgrid network:

Kiwix (:8000) – Serves ZIM archives containing offline websites. This is your Wikipedia, Stack Overflow, documentation sites, and more. The container mounts ./zim/data as read-only and serves everything with wildcard matching.

Ollama (:11434) – The AI backend with full GPU acceleration support (NVIDIA driver required). Stores models in ./ollama/data so your downloaded LLMs persist. Configured to bind to all interfaces so other containers can reach it.

Open WebUI (:8001) – ChatGPT-like interface that connects to Ollama. Has its own data persistence and runs completely offline once configured. Environment variable HF_HUB_OFFLINE=1 prevents it from trying to download shit from Hugging Face.

Ollama Chat Party (:8002) – Multi-user AI chat with RAG (Retrieval-Augmented Generation) support. Password protected (offgrid123) and can index documents you throw in ./ollama-chat-party/data. Multi-user AI chat with document search.

InspIRCd (:6667) – Full IRC server for local communication. Runs as non-root user for security. Perfect for when you need to coordinate with others in your bunker.

TheLounge (:8003) – Web-based IRC client that connects to the local IRC server. No more fucking around with terminal IRC clients if you don’t want to.

Icecast (:8004) – Audio streaming server. Set up your own radio station, stream music, or broadcast emergency communications. All passwords are offgrid123 because security through obscurity is bullshit anyway when you’re offline.

Nginx File Server (:8005) – HTTP file browser with basic auth (offgrid:offgrid123). Serves all your downloaded content: APKs, ISOs, Docker images, ZIM files, maps, and custom files. Has directory listings enabled so you can browse everything.

The Download Arsenal

The trigger-downloads.sh script orchestrates four different download systems:

Docker Images (save-docker-images.sh) – Pulls and saves all container images as .tar files. Includes versioning and can be loaded on air-gapped systems with load-docker-images.sh.

Android APKs (apps/android/apk/download.sh) – Downloads essential Android apps:

  • Kiwix mobile reader
  • F-Droid app store
  • VLC media player
  • Termux terminal emulator
  • Organic Maps for offline navigation
  • Briar messenger for mesh networking
  • BitChat for P2P communication
  • KeePassDX password manager
  • SDR++ for software-defined radio

Bootable ISOs (apps/iso/download.sh) – Gets you bootable operating systems for when you need to resurrect dead hardware or set up new systems.

ZIM Archives (zim/download.sh) – This is where the magic happens. Downloads gigabytes of offline content:

  • FreeCodeCamp tutorials
  • Programming documentation (C++, Go, Docker, JavaScript, HTML, CSS, Nginx)
  • Linux man pages and command references
  • Wikipedia (simplified version)
  • Survival and preparedness guides
  • Ham radio resources
  • Signal identification databases
  • GNU Radio documentation
  • Cooking recipes (Based Cooking – no bullshit recipes)
  • Music theory resources
  • Computer science textbooks

Data Persistence Strategy

Everything important persists in mapped volumes:

ollama/data/          - AI models and configuration
openwebui/data/       - Chat history and user settings
zim/data/            - Offline web archives (ZIM files)
apps/android/apk/data/ - Downloaded Android applications
apps/iso/data/        - Bootable operating system images
docker-images/        - Saved container images for offline loading
file-server/other-files/ - Custom files you want to serve
maps/data/           - Offline map data
thelounge/           - IRC client configuration and logs
inspircd/conf/       - IRC server configuration
inspircd/logs/       - IRC server logs
ollama-chat-party/data/ - RAG documents and chat data

Network Architecture

The offgrid bridge network isolates all services while allowing internal communication. Port mappings expose only what you need to the host system. Services communicate via container names (e.g., http://ollama:11434), not IP addresses.

Content Creation and Customization

Custom Website Archiving

Want to archive your favorite sites? Use the ZIM creation script:

./zim/create.sh https://some-useful-site.com custom_name

This uses Docker and Zimit to crawl websites and create ZIM archives that Kiwix can serve offline. Configurable worker count and output directory. Perfect for archiving documentation sites, forums, or any web content you need offline access to.

Maps Download System

The maps system downloads OpenStreetMap data for offline navigation:

cd maps
./maps.sh list europe      # See available regions
./maps.sh list romania     # See specific country data
./maps.sh list romania | ./maps.sh download  # Download everything for Romania

Downloads .mwm files from the Organic Maps project for offline navigation. Auto-detects the latest map version and supports filtering by region or country. Map data gets stored in maps/data/ and served through the file server for easy transfer to mobile devices.

Mobile Integration

The zim/copy-to-android.sh script transfers ZIM files directly to Android devices over ADB. Automatically detects connected devices and copies archives to the Kiwix app directory. No more fucking around with manual file transfers.

Development Environment

The apps/linux/deb/install.sh script sets up a comprehensive survival toolkit on Ubuntu/Debian systems. This isn’t just development tools – it’s the full package:

Programming Stack: Python, Go, PHP, GCC, GDB, Docker, QEMU/KVM virtualization
Radio Communications: GNU Radio, RTL-SDR, GQRX, FLDigi, JS8Call, WSJTX, Direwolf
Security Tools: John the Ripper, Hashcat, Binwalk, Foremost, Sleuthkit
System Utilities: Wine, XFCE desktop, ISO creation tools, audio processing
Emergency Radio: Ham radio logging, digital modes, APRS, satellite tracking

Over 200 packages covering everything from reverse engineering to emergency communications.

Why This Beats Everything Else

Most “offline solutions” are toys that fall apart the moment you actually need them. This stack was built for people who want something that actually fucking works:

It works offline – Zero external dependencies once downloaded. Every service is self-contained.

Real AI, not chatbots – Full Ollama stack supports any models you can download. Code Llama, Mistral, whatever fits your hardware.

Useful content – Programming docs, Wikipedia, survival guides, radio references, maps – the stuff you actually need instead of TikTok bullshit.

Communication tools – IRC server, mesh messaging, audio streaming. Build your own social network.

Development ready – Full documentation for every major programming language, containerized development environment.

Actually reliable – Everything persists across container restarts. Your data survives reboots, updates, hardware changes.

Hardware Requirements

Minimum: 8GB RAM, 100GB storage, x86_64 CPU
Recommended: 16GB RAM, 500GB+ SSD, discrete GPU for AI acceleration
Storage breakdown: Docker images (~10GB), ZIM archives (~50GB), APKs (~1GB), ISOs (~20GB), maps (varies), AI models (~10GB+ per model)

GPU acceleration requires NVIDIA Docker runtime. AMD/Intel graphics work but performance suffers for AI workloads.

Security Model

This isn’t designed for internet-facing deployment. It’s for local/offline use where physical security matters more than network security. Default passwords are intentionally simple because if someone has access to your offline bunker network, you have bigger problems.

Authentication exists to prevent accidental access, not determined attackers. Focus is on functionality over paranoia.

Get The Fucking Code

Ready to build your own digital kingdom?

GitHub Repositoryhttps://github.com/psyb0t/offgrid-tools


Built for scenarios where “just use the cloud” isn’t an option.