Mango is a self-hosted manga server and web reader
Go to file
Alex Ling 1fb48648ad
Merge pull request #322 from getmango/rc/0.27.0
v0.27.0
2022-07-31 22:53:11 +08:00
.github Update a container version of bulid workflow 2021-08-16 13:23:58 +09:00
migration Fix down SQL 2022-01-15 12:08:23 +00:00
public Merge branch 'dev' into fix/hide-subscribe-btn 2022-07-18 19:42:23 +08:00
spec Use `myhtml` in plugin helper and add tests (#320) 2022-07-17 14:54:25 +00:00
src Merge branch 'rc/0.27.0' into dev 2022-07-31 13:55:02 +00:00
.all-contributorsrc docs: update .all-contributorsrc [skip ci] 2022-01-26 11:52:12 +00:00
.ameba.yml Disable `plugin_spec.cr` line limit 2022-07-17 15:24:01 +00:00
.dockerignore Forgot .github 2021-09-08 07:58:58 -04:00
.gitignore Optimize the static files 2021-02-10 16:24:34 +00:00
Dockerfile Use yaml-static in Dockerfile 2021-08-18 21:23:28 +09:00
Dockerfile.arm32v7 Update ARM Dockerfile 2021-08-20 08:26:11 +00:00
Dockerfile.arm64v8 Update ARM Dockerfile 2021-08-20 08:26:11 +00:00
LICENSE - initial commit 2020-02-11 22:06:17 +00:00
Makefile Use Ameba to enforce max line width 2021-01-27 04:18:47 +00:00
README.md Bump version to 0.27.0 2022-07-18 12:38:22 +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 Add simple manifest.json (closes #262) 2022-03-11 13:44:16 +00:00
package.json Remove sourcerer.io HoF and use all-contributors 2021-01-11 11:28:30 +00:00
shard.lock Sanitize parameters on user edit page (fixes #289) 2022-04-04 03:20:52 +00:00
shard.yml Bump version to 0.27.0 2022-07-18 12:38:22 +00:00

README.md

banner

Mango

Patreon Build Gitter Discord

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

  • Multi-user support
  • OPDS support
  • Dark/light mode switch
  • Supported formats: .cbz, .zip, .cbr and .rar
  • Supports nested folders in library
  • Automatically stores reading progress
  • Thumbnail generation
  • Supports plugins to download from third-party sites
  • 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

Please check the Wiki for more information.

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 of some libraries. Please see the Dockerfile for the full list of dependencies
  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 - Manga Server and Web Reader. Version 0.27.0

  Usage:

    mango [sub_command] [options]

  Options:

    -c PATH, --config=PATH           Path to the config file [type:String]
    -h, --help                       Show this help.
    -v, --version                    Show version.

  Sub Commands:

    admin   Run admin tools

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

---
host: 0.0.0.0
port: 9000
base_url: /
session_secret: mango-session-secret
library_path: ~/mango/library
db_path: ~/mango/mango.db
queue_db_path: ~/mango/queue.db
scan_interval_minutes: 5
thumbnail_generation_interval_hours: 24
log_level: info
upload_path: ~/mango/uploads
plugin_path: ~/mango/plugins
download_timeout_seconds: 30
library_cache_path: ~/mango/library.yml.gz
cache_enabled: true
cache_size_mbs: 50
cache_log_enabled: true
disable_login: false
default_username: ""
auth_proxy_header_name: ""
plugin_update_interval_hours: 24
  • scan_interval_minutes, thumbnail_generation_interval_hours, and plugin_update_interval_hours can be any non-negative integer. Setting them to 0 disables the periodic tasks
  • log_level can be debug, info, warn, error, fatal or off. Setting it to off disables the logging
  • You can disable authentication by setting disable_login to true. Note that default_username must be set to an existing username for this to work.
  • By setting cache_enabled to true, you can enable an experimental feature where Mango caches library metadata to improve page load time. You can further fine-tune the feature with cache_size_mbs and cache_log_enabled.

Library Structure

You can organize your archive 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

Sponsors

Contributors

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


Alex Ling

💻 📖 🚇

jaredlt

💻 🤔 🎨

ココロ

🚇

Valentijn

🚇

flying-sausages

📖 🤔

Xavier

🚇

Jarao

🚇

이인용

💻

Simon

💻

David Knaack

🚇

i use arch btw

🚇

BradleyDS2

📖

Robbo

💻