Mango is a self-hosted manga server and web reader
Go to file
Alex Ling 4371c7877d Use base URL in cookies path 2020-05-31 14:34:42 +00:00
.github Add missing `libarchive-dev` library 2020-05-29 14:28:18 +00:00
dev Rename scripts/ to dev/ 2020-05-17 13:44:10 +00:00
public Explicitly set icon size (#40) [skip ci] 2020-05-23 14:47:35 +00:00
spec Use singleton in tests 2020-05-07 10:12:58 +00:00
src Use base URL in cookies path 2020-05-31 14:34:42 +00:00
.ameba.yml Use Ameba 2020-04-08 06:45:45 +00:00
.gitignore Ignore markdown files 2020-05-03 12:01:57 +00:00
Dockerfile Add missing `libarchive-dev` library 2020-05-29 14:28:18 +00:00
LICENSE - initial commit 2020-02-11 22:06:17 +00:00
Makefile Pass in `production` flag when installing shards 2020-05-29 16:23:48 +00:00
README.md Bump version to v0.4.0 2020-05-24 06:36:40 +00:00
docker-compose.yml docker: Use a .env file 2020-04-06 21:49:14 +02:00
env.example docker: Use a .env file 2020-04-06 21:49:14 +02:00
gulpfile.js Remove console in minified JS files 2020-02-24 15:45:05 +00:00
package.json Use Babel, so I can write mordern JS and save my sanity 2020-02-22 02:12:01 +00:00
shard.lock Use `archive.cr` v0.1.0 2020-05-29 14:00:59 +00:00
shard.yml Promote ameba from development dependency to regular dependency 2020-05-29 16:33:15 +00:00

README.md

banner

Mango

Patreon Build Gitter

Mango is a self-hosted manga server and reader. Its features include

  • Multi-user support
  • Dark/light mode switch
  • Supports both .zip and .cbz formats
  • Supports nested folders in library
  • Automatically stores reading progress
  • Built-in MangaDex downloader
  • The web reader is responsive and works well on mobile, so there is no need for a mobile app
  • All the static files are embedded in the binary, so the deployment process is easy and painless

Installation

Pre-built Binary

Simply download the pre-built binary file mango for the latest release. All the dependencies are statically linked, and it should work with most Linux systems on amd64.

Docker

  1. Make sure you have docker installed and running. You will also need docker-compose
  2. Clone the repository
  3. Copy the env.example file to .env
  4. Fill out the values in the .env file. Note that the main and config directories will be created if they don't already exist. The files in these folders will be owned by the root user
  5. Run docker-compose up. This should build the docker image and start the container with Mango running inside
  6. Head over to localhost:9000 (or a different port if you changed it) to log in

Docker (via Dockerhub)

The official docker images are available on Dockerhub.

Build from source

  1. Make sure you have crystal, shards and yarn installed. You might also need to install the development headers for libsqlite3 and libyaml.
  2. Clone the repository
  3. make && sudo make install
  4. Start Mango by running the command mango
  5. Head over to localhost:9000 to log in

Usage

CLI

Mango e-manga server/reader. Version 0.4.0

    -v, --version                    Show version
    -h, --help                       Show help
    -c PATH, --config=PATH           Path to the config file. Default is `~/.config/mango/config.yml`

Config

The default config file location is ~/.config/mango/config.yml. It might be different if you are running Mango in a docker container. The config options and default values are given below

---
port: 9000
base_url: /
library_path: ~/mango/library
db_path: ~/mango/mango.db
scan_interval_minutes: 5
log_level: info
upload_path: ~/mango/uploads
mangadex:
  base_url: https://mangadex.org
  api_url: https://mangadex.org/api
  download_wait_seconds: 5
  download_retries: 4
  download_queue_db_path: ~/mango/queue.db
  chapter_rename_rule: '[Vol.{volume} ][Ch.{chapter} ]{title|id}'
  manga_rename_rule: '{title}'
  • scan_interval_minutes can be any non-negative integer. Setting it to 0 disables the periodic scan
  • log_level can be debug, info, warn, error, fatal or off. Setting it to off disables the logging

Library Structure

You can organize your .cbz/.zip files in nested folders in the library directory. Here's an example:

.
├── Manga 1
│   ├── Volume 1.cbz
│   ├── Volume 2.cbz
│   ├── Volume 3.cbz
│   └── Volume 4.zip
└── Manga 2
    └── Vol. 1
        └── Ch.1 - Ch.3
            ├── 1.zip 
            ├── 2.zip 
            └── 3.zip

Initial Login

On the first run, Mango would log the default username and a randomly generated password to STDOUT. You are advised to immediately change the password.

Screenshots

Library:

library screenshot

Title:

title screenshot

Dark mode:

dark mode screeshot

Reader:

reader screenshot

Mobile UI:

mobile screenshot

Contributors

Please check the development guideline if you are interest in code contributions.