{"id":13761513,"url":"https://github.com/lrnselfreliance/wrolpi","last_synced_at":"2026-04-15T01:03:32.087Z","repository":{"id":37886299,"uuid":"214041551","full_name":"lrnselfreliance/wrolpi","owner":"lrnselfreliance","description":"Create your own off-grid library","archived":false,"fork":false,"pushed_at":"2024-03-29T18:43:07.000Z","size":8247,"stargazers_count":50,"open_issues_count":30,"forks_count":5,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-03-29T19:43:21.504Z","etag":null,"topics":["censorship","censorship-resistance","off-grid","prepper","raspberry-pi","singlefile","youtube","yt-dlp","yt-dlp-wrapper"],"latest_commit_sha":null,"homepage":"https://wrolpi.org","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lrnselfreliance.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2019-10-09T23:11:51.000Z","updated_at":"2024-04-14T18:27:28.937Z","dependencies_parsed_at":"2024-01-11T00:56:43.451Z","dependency_job_id":"abc43391-b064-4b36-81d3-70cb611f887d","html_url":"https://github.com/lrnselfreliance/wrolpi","commit_stats":null,"previous_names":[],"tags_count":45,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lrnselfreliance%2Fwrolpi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lrnselfreliance%2Fwrolpi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lrnselfreliance%2Fwrolpi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lrnselfreliance%2Fwrolpi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lrnselfreliance","download_url":"https://codeload.github.com/lrnselfreliance/wrolpi/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224961987,"owners_count":17399141,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["censorship","censorship-resistance","off-grid","prepper","raspberry-pi","singlefile","youtube","yt-dlp","yt-dlp-wrapper"],"created_at":"2024-08-03T13:01:58.551Z","updated_at":"2026-04-15T01:03:32.067Z","avatar_url":"https://github.com/lrnselfreliance.png","language":"JavaScript","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# WROLPi\n\n[![Build Status](https://img.shields.io/circleci/build/github/lrnselfreliance/wrolpi/release?label=release%20build)](https://app.circleci.com/pipelines/github/lrnselfreliance/wrolpi?branch=release\u0026filter=all)\n[![License: GPL v3](https://img.shields.io/github/license/lrnselfreliance/wrolpi?style=flat-square)](https://github.com/lrnselfreliance/wrolpi/blob/master/LICENSE)\n[![Discord](https://img.shields.io/discord/900430987987681330?label=Discord\u0026logo=discord)](https://discord.gg/HrwFk7nqA2)\n[![Gitpod](https://img.shields.io/badge/Contribute%20with-Gitpod-908a85?logo=gitpod)](https://gitpod.io/#https://github.com/lrnselfreliance/wrolpi)\n\n**Create your own off-grid library.**\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"256px\" src=\"https://raw.githubusercontent.com/lrnselfreliance/wrolpi/master/icon.png\" alt='WROLPi Logo'\u003e\n\u003c/p\u003e\n\nWROLPi is a self-contained collection of software to help you survive the world Without Rule of Law.\n\nWROLPi is intended to be run on a Raspberry Pi with an optional external drive attached. It serves up it's own Wi-Fi\nnetwork so that any user with a laptop/tablet/phone can connect and use the library created by the maintainer.\n\n# Table of Contents\n\n* [Features](#features)\n* [Demo](#demo)\n* [Download](#download)\n* [Try WROLPi](#try-wrolpi)\n* [Docker Documentation](docker/README.md)\n* [Debian 12 Install](#debian-12-install)\n* [Raspberry Pi Install](#raspberrypi-install)\n* [Charter](#charter)\n* [Upgrading WROLPi](UPGRADE.md)\n* [Join](#join)\n\n# Features\n\n- [x] Videos\n- [x] Web Archives\n- [x] Maps\n- [x] Wikipedia\n- [x] File search\n- [x] eBooks (EPUB / PDFs)\n- [x] Wi-Fi Hotspot\n- [x] Universal search\n- [x] Food Inventory management\n- [x] One-Time pad generator, encrypter/decrypter\n- [ ] Synchronizer/duplicator\n- [ ] Food storage calculator\n\n## Module features matrix\n\n| **Module**     | **View** | **Search** | **Download** | **Project**                                                |\n|----------------|----------|:-----------|--------------|------------------------------------------------------------|\n| Videos         | yes      | yes        | yes          | [yt-dlp](https://github.com/yt-dlp/yt-dlp)                 |\n| Web Archives   | yes      | yes        | yes          | [Singlefile](https://github.com/gildas-lormeau/SingleFile) |\n| Wikipedia      | yes      | yes        | yes          | [Kiwix](https://www.kiwix.org)                             |\n| eBooks         | yes      | yes        | planned      | EPUB/PDF                                                   |\n| Map            | yes      | yes        | yes          | [Protomaps](https://protomaps.com/)                        |\n| Podcasts/Audio | yes      | planned    | planned      |                                                            |\n\n# Demo\n\n\u003ca href=\"https://www.youtube.com/watch?v=Qz-FuenRylQ\"\u003e ![YouTube Demo Video](https://raw.githubusercontent.com/lrnselfreliance/wrolpi/master/demo_link.jpg)\u003c/a\u003e\n\n# Download\n\nImages are available at [wrolpi.org](https://wrolpi.org)\n\n# Try WROLPi!\n\nYou can try out WROLPi by running the docker containers.\n\n1. [Install docker-ce](https://docs.docker.com/install/linux/docker-ce/debian/) and\n   [docker-compose](https://docs.docker.com/compose/install/)\n2. Copy the latest WROLPi code.\n    * `git clone https://github.com/lrnselfreliance/wrolpi.git`\n3. Change directory into the code base.\n    * `cd wrolpi`\n4. Initialize git submodules\n    * `git submodule update --init`\n5. Build the containers.\n    * `docker-compose build --parallel`\n6. Create volumes.\n    * `docker volume create --name=openstreetmap-data`\n    * `docker volume create --name=openstreetmap-rendered-tiles`\n7. Start the database.\n    * `docker-compose up -d db`\n8. Initialize the database.\n    * `docker-compose run --rm api db upgrade`\n9. Start the docker containers.\n    * `docker-compose up`\n10. Browse to WROLPi.\n    * https://0.0.0.0:8443\n\nMore Docker documentation is available in [docker/README.md](docker/README.md)\n\n# Debian 12 Install\n\nSteps necessary to initialize your WROLPi after installing the Debian image from wrolpi.org\n\n1. Download and copy a pre-built Debian image from https://wrolpi.org onto a USB thumb-drive (USB 2 recommended)\n2. Insert the thumb-drive into the laptop, boot to the thumb-drive\n    1. Select \"Start Installer\"\n    2. Install Debian 12 as you would like.\n        1. It is recommended to use the hostname **wrolpi**\n        2. (WROLPi will be installed during the installation without your intervention.)\n3. Unplug the thumb-drive after the installation has completed\n4. Login as the user _you_ created during installation.\n5. Switch to the root user: `su -`\n6. Initialize the WROLPi databases using the repair script: `/opt/wrolpi/repair.sh`\n7. Reboot: `reboot`\n8. Browse to https://wrolpi.local or the IP address of your WROLPi!\n\n# Raspberry Pi Install\n\nSteps necessary to initialize your WROLPi after installing the Raspberry Pi image from wrolpi.org\n\n1. Download and copy a pre-built image from https://wrolpi.org onto an SD card.\n2. Boot the Raspberry Pi, login with username pi and password wrolpi.\n3. Modify fstab to mount your external drive to /media/wrolpi (modify this command to match your system).\n    * `echo '/dev/sda1 /media/wrolpi auto defaults,nofail 0 0' | sudo tee -a /etc/fstab`\n4. Initialize the WROLPi databases using the repair script: `sudo /opt/wrolpi/repair.sh`\n5. Reboot `sudo reboot`\n6. Join the Hotspot or browse to https://wrolpi.local or the IP address of your WROLPi!\n\n# Charter\n\n## Guiding Principals\n\n1. Storage is cheaper than power.\n2. Two is one, one is none.\n3. Run silently.\n4. Primary, secondary, tertiary.\n5. Secure as a bookshelf in your home.\n\n## Physical properties\n\n1. A WROLPi instance should be capable of running with a minimal of hardware:\n    * Raspberry Pi\n    * SD card\n    * External USB hard drive\n    * Power supply and cables\n    * Wi-Fi USER device such as a phone, tablet, or laptop.\n2. A WROLPi instance should consume a minimal amount of electricity during WROL event. It is expected power will be\n   scarce when WROLPi is needed most.\n\n## User expectations\n\n1. A WROLPi instance should be run and maintained by a person (MAINTAINER) with a moderate amount of Linux and Raspberry\n   Pi experience. It is expected that they should be able to do this using only the documentation on their WROLPi.\n\n## Software properties and capabilities\n\n1. A WROLPi instance should be able to \"factory-reset\" itself without any outside services.\n2. WROLPi should function completely without any internet services.\n3. A user should have easy access to their data if WROLPi fails:\n    * For example, a user can watch their videos by navigating a short and intuitive directory structure and opening the\n      video in their preferred video player.\n4. WROLPi should be self-documented. The UI should contain a tutorial for USERS as well as the MAINTAINER.\n    * If the UI isn't functional, the code should be documented such that a user can restore functionality.\n5. WROLPi should favor pre-processing, rather than processing during a WROL event. Such as re-encoding a video, or\n   processing captions. This is to ensure that when a user adds content during non-WROL time, the processing for optimum\n   performance is already done for a WROL event.\n\n# Join!\n\n\u003cp\u003e\n   \u003cimg src=\"https://raw.githubusercontent.com/lrnselfreliance/wrolpi/master/join_discord.png\" alt='Discord QR Code'\u003e\n\u003c/p\u003e\n\n[Join our Discord](https://discord.gg/HrwFk7nqA2)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flrnselfreliance%2Fwrolpi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flrnselfreliance%2Fwrolpi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flrnselfreliance%2Fwrolpi/lists"}