{"id":15033533,"url":"https://github.com/getmango/mango","last_synced_at":"2025-03-17T18:14:28.450Z","repository":{"id":37038932,"uuid":"239874387","full_name":"getmango/Mango","owner":"getmango","description":"Mango is a self-hosted manga server and web reader","archived":false,"fork":false,"pushed_at":"2023-07-02T02:23:36.000Z","size":8284,"stargazers_count":1754,"open_issues_count":77,"forks_count":125,"subscribers_count":35,"default_branch":"master","last_synced_at":"2025-03-16T04:16:13.756Z","etag":null,"topics":["crystal","crystal-lang","manga","manga-reader","manga-server","mangadex","self-hosted","web-application"],"latest_commit_sha":null,"homepage":"https://getmango.app","language":"Crystal","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/getmango.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null},"funding":{"open_collective":"mango","patreon":"hkalexling","ko_fi":"hkalexling"}},"created_at":"2020-02-11T22:06:07.000Z","updated_at":"2025-03-14T14:03:53.000Z","dependencies_parsed_at":"2024-06-29T07:32:31.389Z","dependency_job_id":null,"html_url":"https://github.com/getmango/Mango","commit_stats":null,"previous_names":["hkalexling/mango"],"tags_count":53,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getmango%2FMango","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getmango%2FMango/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getmango%2FMango/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getmango%2FMango/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/getmango","download_url":"https://codeload.github.com/getmango/Mango/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244085031,"owners_count":20395523,"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":["crystal","crystal-lang","manga","manga-reader","manga-server","mangadex","self-hosted","web-application"],"created_at":"2024-09-24T20:21:36.347Z","updated_at":"2025-03-17T18:14:28.422Z","avatar_url":"https://github.com/getmango.png","language":"Crystal","funding_links":["https://opencollective.com/mango","https://patreon.com/hkalexling","https://ko-fi.com/hkalexling","https://img.shields.io/badge/support-patreon-brightgreen?link=https://www.patreon.com/hkalexling","https://www.patreon.com/hkalexling"],"categories":[],"sub_categories":[],"readme":"![banner](./public/img/banner-paddings.png)\n\n# Mango\n\n[![Patreon](https://img.shields.io/badge/support-patreon-brightgreen?link=https://www.patreon.com/hkalexling)](https://www.patreon.com/hkalexling) ![Build](https://github.com/hkalexling/Mango/workflows/Build/badge.svg) [![Gitter](https://badges.gitter.im/mango-cr/mango.svg)](https://gitter.im/mango-cr/mango?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge) [![Discord](https://img.shields.io/discord/855633663425118228?label=discord)](http://discord.com/invite/ezKtacCp9Q)\n\nMango is a self-hosted manga server and reader. Its features include\n\n- Multi-user support\n- OPDS support\n- Dark/light mode switch\n- Supported formats: `.cbz`, `.zip`, `.cbr` and `.rar`\n- Supports nested folders in library\n- Automatically stores reading progress\n- Thumbnail generation\n- Supports [plugins](https://github.com/hkalexling/mango-plugins) to download from third-party sites\n- The web reader is responsive and works well on mobile, so there is no need for a mobile app\n- All the static files are embedded in the binary, so the deployment process is easy and painless\n\nPlease check the [Wiki](https://github.com/hkalexling/Mango/wiki) for more information.\n\n## Installation\n\n### Pre-built Binary\n\nSimply download the pre-built binary file `mango` for the latest [release](https://github.com/hkalexling/Mango/releases). All the dependencies are statically linked, and it should work with most Linux systems on amd64.\n\n### Docker\n\n1. Make sure you have docker installed and running. You will also need `docker-compose`\n2. Clone the repository\n3. Copy the `env.example` file to `.env`\n4. 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\n5. Run `docker-compose up`. This should build the docker image and start the container with Mango running inside\n6. Head over to `localhost:9000` (or a different port if you changed it) to log in\n\n### Docker (via Dockerhub)\n\nThe official docker images are available on [Dockerhub](https://hub.docker.com/r/hkalexling/mango).\n\n### Build from source\n\n1. 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](https://github.com/hkalexling/Mango/blob/master/Dockerfile) for the full list of dependencies\n2. Clone the repository\n3. `make \u0026\u0026 sudo make install`\n4. Start Mango by running the command `mango`\n5. Head over to `localhost:9000` to log in\n\n## Usage\n\n### CLI\n\n```\n  Mango - Manga Server and Web Reader. Version 0.27.0\n\n  Usage:\n\n    mango [sub_command] [options]\n\n  Options:\n\n    -c PATH, --config=PATH           Path to the config file [type:String]\n    -h, --help                       Show this help.\n    -v, --version                    Show version.\n\n  Sub Commands:\n\n    admin   Run admin tools\n```\n\n### Config\n\nThe 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\n\n```yaml\n---\nhost: 0.0.0.0\nport: 9000\nbase_url: /\nsession_secret: mango-session-secret\nlibrary_path: ~/mango/library\ndb_path: ~/mango/mango.db\nqueue_db_path: ~/mango/queue.db\nscan_interval_minutes: 5\nthumbnail_generation_interval_hours: 24\nlog_level: info\nupload_path: ~/mango/uploads\nplugin_path: ~/mango/plugins\ndownload_timeout_seconds: 30\nlibrary_cache_path: ~/mango/library.yml.gz\ncache_enabled: true\ncache_size_mbs: 50\ncache_log_enabled: true\ndisable_login: false\ndefault_username: \"\"\nauth_proxy_header_name: \"\"\nplugin_update_interval_hours: 24\n```\n\n- `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\n- `log_level` can be `debug`, `info`, `warn`, `error`, `fatal` or `off`. Setting it to `off` disables the logging\n- 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.\n- 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`.\n\n### Library Structure\n\nYou can organize your archive files in nested folders in the library directory. Here's an example:\n\n```\n.\n├── Manga 1\n│   ├── Volume 1.cbz\n│   ├── Volume 2.cbz\n│   ├── Volume 3.cbz\n│   └── Volume 4.zip\n└── Manga 2\n    └── Vol. 1\n        └── Ch.1 - Ch.3\n            ├── 1.zip\n            ├── 2.zip\n            └── 3.zip\n```\n\n### Initial Login\n\nOn the first run, Mango would log the default username and a randomly generated password to STDOUT. You are advised to immediately change the password.\n\n## Screenshots\n\nLibrary:\n\n![library screenshot](./.github/screenshots/library.png)\n\nTitle:\n\n![title screenshot](./.github/screenshots/title.png)\n\nDark mode:\n\n![dark mode screeshot](./.github/screenshots/dark.png)\n\nReader:\n\n![reader screenshot](./.github/screenshots/reader.png)\n\nMobile UI:\n\n![mobile screenshot](./.github/screenshots/mobile.png)\n\n## Sponsors\n\n\u003ca href=\"https://casinoshunter.com/online-casinos/\"\u003e\u003cimg src=\"https://i.imgur.com/EJb3wBo.png\" width=\"150\" height=\"auto\"\u003e\u003c/a\u003e\n\u003ca href=\"https://www.browserstack.com/open-source\"\u003e\u003cimg src=\"https://i.imgur.com/hGJUJXD.png\" width=\"150\" height=\"auto\"\u003e\u003c/a\u003e\n\n## Contributors\n\nPlease check the [development guideline](https://github.com/hkalexling/Mango/wiki/Development) if you are interested in code contributions.\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/hkalexling/\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/7845831?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAlex Ling\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/hkalexling/Mango/commits?author=hkalexling\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/hkalexling/Mango/commits?author=hkalexling\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"#infra-hkalexling\" title=\"Infrastructure (Hosting, Build-Tools, etc)\"\u003e🚇\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/jaredlt\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/8590311?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ejaredlt\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/hkalexling/Mango/commits?author=jaredlt\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#ideas-jaredlt\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"#design-jaredlt\" title=\"Design\"\u003e🎨\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://windisco.com/\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/4946624?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eココロ\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#infra-shincurry\" title=\"Infrastructure (Hosting, Build-Tools, etc)\"\u003e🚇\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://catgirlsin.space/\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/13433513?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eValentijn\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#infra-noirscape\" title=\"Infrastructure (Hosting, Build-Tools, etc)\"\u003e🚇\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/flying-sausages\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/23618693?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eflying-sausages\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/hkalexling/Mango/commits?author=flying-sausages\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"#ideas-flying-sausages\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/XavierSchiller\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/22575255?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eXavier\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#infra-XavierSchiller\" title=\"Infrastructure (Hosting, Build-Tools, etc)\"\u003e🚇\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/WROIATE\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/44677306?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJarao\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#infra-WROIATE\" title=\"Infrastructure (Hosting, Build-Tools, etc)\"\u003e🚇\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/Leeingnyo\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/6760150?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003e이인용\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/hkalexling/Mango/commits?author=Leeingnyo\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://h45h74x.eu.org\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/27204033?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSimon\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/hkalexling/Mango/commits?author=h45h74x\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/davidkna\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/835177?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDavid Knaack\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#infra-davidkna\" title=\"Infrastructure (Hosting, Build-Tools, etc)\"\u003e🚇\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://lncn.dev\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/41193328?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ei use arch btw\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#infra-lincolnthedev\" title=\"Infrastructure (Hosting, Build-Tools, etc)\"\u003e🚇\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/BradleyDS2\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/2174921?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eBradleyDS2\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/hkalexling/Mango/commits?author=BradleyDS2\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/nduja\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/69299134?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eRobbo\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/hkalexling/Mango/commits?author=nduja\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetmango%2Fmango","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgetmango%2Fmango","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetmango%2Fmango/lists"}