{"id":28822079,"url":"https://github.com/hkalexling/Mango","last_synced_at":"2025-06-18T23:01:48.308Z","repository":{"id":37038932,"uuid":"239874387","full_name":"getmango/Mango","owner":"getmango","description":"Mango is a self-hosted manga server and web reader","archived":true,"fork":false,"pushed_at":"2025-03-23T09:16:02.000Z","size":8260,"stargazers_count":1766,"open_issues_count":78,"forks_count":126,"subscribers_count":35,"default_branch":"master","last_synced_at":"2025-06-12T02:26:22.981Z","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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"open_collective":"mango","patreon":"hkalexling","ko_fi":"hkalexling"}},"created_at":"2020-02-11T22:06:07.000Z","updated_at":"2025-06-10T09:22:50.000Z","dependencies_parsed_at":"2025-04-06T21:28:05.860Z","dependency_job_id":"2ca22f7c-f1df-451c-801b-1055b3eb1bc1","html_url":"https://github.com/getmango/Mango","commit_stats":null,"previous_names":["hkalexling/mango"],"tags_count":53,"template":false,"template_full_name":null,"purl":"pkg:github/getmango/Mango","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","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getmango%2FMango/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260647979,"owners_count":23041716,"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":"2025-06-18T23:01:46.084Z","updated_at":"2025-06-18T23:01:48.264Z","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":["10、基础服务架构"],"sub_categories":["9、效率工具集合"],"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\n\u003e [!CAUTION]\n\u003e As of March 2025, Mango is no longer maintained. We are incredibly grateful to everyone who used it, contributed, or gave feedback along the way - thank you! Unfortunately, we just don't have the time to keep it going right now. That said, it's open source, so you're more than welcome to fork it, build on it, or maintain your own version. If you're looking for alternatives, check out the wiki for similar projects. We might return to it someday, but for now, we don't recommend using it as-is - running unmaintained software can introduce security risks.\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%2Fhkalexling%2FMango","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhkalexling%2FMango","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhkalexling%2FMango/lists"}