# KOReaderServerFetcher A simple setup to push books from your computer to your e-reader. Hit a button on your Kindle/Kobo, get your books just that easy. ## What This Does - **Server**: Python HTTP server that serves files from a folder and archives them after sending - **Plugin**: KOReader plugin that fetches those files with one tap ## Setup ### Server Side 1. Put `server.py` somewhere on your computer 2. Create a config at the top of the file: - Set `AUTH_TOKEN` to something secret - Set `SOURCE_DIR` to where you drop books (e.g., `/home/you/books/inbox`) - Set `ARCHIVE_DIR` to where served books go (e.g., `/home/you/books/sent`) 3. Run it: ```bash python3 server.py ``` 4. (Optional) Make it a service so it starts automatically: ```bash sudo cp file-server.service /etc/systemd/system/ # Edit the file to fix paths and username sudo systemctl enable file-server sudo systemctl start file-server ``` ### KOReader Plugin 1. Copy the plugin folder to your device: ``` koreader/plugins/fetch.koplugin/ ├── main.lua └── config.lua ``` 2. Edit `config.lua`: ```lua return { server_url = "http://your-server:8000/get", auth_token = "your-secret-token-here" } ``` 3. Restart KOReader ## Usage 1. Drop books into your server's inbox folder 2. On your e-reader: Menu → Fetch Files → Fetch Now 3. Books appear in your configured directory First time setup: go to Menu → Fetch Files → Configure Home Directory to pick where books should go. ## How It Works The server zips up everything in the source folder and sends it over. After sending, it moves those files to the archive folder so you don't get duplicates next time. The plugin downloads the zip, extracts it, and cleans up after itself. ## Nginx Setup If you want to access this over the internet, put it behind nginx with SSL: ```nginx location /get { proxy_pass http://localhost:8000; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; } ``` ## Troubleshooting **Plugin doesn't show up**: Check KOReader's crash.log **Can't connect to server**: Make sure the URL in config.lua is correct and the server is running **Authentication failed**: Token mismatch between server.py and config.lua **Files not extracting**: The plugin needs `unzip` available on your device (it usually is) **Server logs wrong IP**: Make sure nginx is forwarding the X-Forwarded-For header ## Requirements - Python 3.6+ - KOReader - `unzip` command on your e-reader (standard on most devices) ## License Do whatever you want with this.