{"id":13910801,"url":"https://github.com/82Flex/DCRM","last_synced_at":"2025-07-18T10:31:12.162Z","repository":{"id":16621508,"uuid":"80347755","full_name":"82Flex/DCRM","owner":"82Flex","description":"Darwin Cydia Repo Manager - v4 redesigned in Django.","archived":true,"fork":false,"pushed_at":"2022-03-11T23:53:54.000Z","size":9645,"stargazers_count":248,"open_issues_count":5,"forks_count":101,"subscribers_count":17,"default_branch":"master","last_synced_at":"2024-08-08T00:44:13.411Z","etag":null,"topics":["apt-get","apt-packages","apt-repository","checkra1n","cydia","cydia-repo","cydia-tweak","cydiarepo","deb","django","dpkg","dpkg-deb","jailbreak","jailbreak-repo","repository","repository-management","sileo","sileo-repo","sileorepo","unc0ver"],"latest_commit_sha":null,"homepage":"https://apt.82flex.com/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/82Flex.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-01-29T13:35:47.000Z","updated_at":"2024-08-04T09:57:41.000Z","dependencies_parsed_at":"2022-08-07T08:15:29.031Z","dependency_job_id":null,"html_url":"https://github.com/82Flex/DCRM","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/82Flex%2FDCRM","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/82Flex%2FDCRM/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/82Flex%2FDCRM/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/82Flex%2FDCRM/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/82Flex","download_url":"https://codeload.github.com/82Flex/DCRM/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226388791,"owners_count":17617332,"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":["apt-get","apt-packages","apt-repository","checkra1n","cydia","cydia-repo","cydia-tweak","cydiarepo","deb","django","dpkg","dpkg-deb","jailbreak","jailbreak-repo","repository","repository-management","sileo","sileo-repo","sileorepo","unc0ver"],"created_at":"2024-08-07T00:01:46.115Z","updated_at":"2024-11-25T19:32:07.177Z","avatar_url":"https://github.com/82Flex.png","language":"Python","funding_links":["https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=772TAEU53AXFY","https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=M2DGSYVJASPAL"],"categories":["Python"],"sub_categories":[],"readme":"\u003cp style=\"text-align: center;\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/82Flex/DCRM/master/docs/logo.png\" width=\"160\" alt=\"DCRM Logo\"/\u003e\u003cbr /\u003e\n\u003c/p\u003e\n\u003cp style=\"text-align: center;\"\u003eDCRM - Darwin Cydia Repository Manager (Version 4)\u003c/p\u003e\n\u003cp style=\"text-align: center;\"\u003eDO NOT USE DCRM FOR DISTRIBUTING PIRATED PACKAGES. 请勿使用 DCRM 分发盗版软件包.\u003c/p\u003e\n\n\n\u003c!-- TOC insertanchor:true --\u003e\n\n- [SUMMARY](#summary)\n    - [Features](#features)\n    - [TODOs](#todos)\n- [DEMO](#demo)\n- [DOCKER DEPLOY 自动部署](#docker-deploy-自动部署)\n    - [Docker Commands 常用命令](#docker-commands-常用命令)\n    - [Basic Configuration](#basic-configuration)\n    - [Configure GnuPG](#configure-gnupg)\n- [PUBLISH REPOSITORY 发布软件源](#publish-repository-发布软件源)\n- [MANUALLY DEPLOY 手动部署](#manually-deploy-手动部署)\n    - [ENVIRONMENT 环境](#environment-环境)\n    - [EXAMPLE 示例](#example-示例)\n    - [IN PRODUCTION 生产环境示例](#in-production-生产环境示例)\n        - [Configure UWSGI](#configure-uwsgi)\n        - [UWSGI Commands](#uwsgi-commands)\n        - [Configure NGINX](#configure-nginx)\n        - [NGINX Commands](#nginx-commands)\n        - [Configure Workers](#configure-workers)\n        - [Configure GnuPG](#configure-gnupg)\n- [CONTRIBUTORS](#contributors)\n- [LICENSE 版权声明](#license-版权声明)\n\n\u003c!-- /TOC --\u003e\n\n\n----\n\n\n# 1. SUMMARY\n\u003ca id=\"markdown-summary\" name=\"summary\"\u003e\u003c/a\u003e\n\nDCRM means Darwin Cydia Repo (APT) Manager, which is designed for [Jay Freeman](https://twitter.com/saurik)'s [Cydia](https://en.wikipedia.org/wiki/Cydia). Cydia is an universal package manager for jailbroken devices.\n\n\n## 1.1. Features\n\u003ca id=\"markdown-features\" name=\"features\"\u003e\u003c/a\u003e\n\n- full featured dashboard powered by [Django](https://www.djangoproject.com/) and [Django Suit](https://djangosuit.com/)\n- restful APIs with full documentation powered by [Django REST framework](https://www.django-rest-framework.org/)\n- import Debian package (.deb) via http or ftp upload\n- manage packages, versions, sections and icons\n- sync control fields between db and the `control` file inside package automatically\n- auto generated depiction pages, mobile optimized\n- [threaded comments](https://github.com/HonzaKral/django-threadedcomments) \u0026 [screenshots gallery](https://github.com/richardbarran/django-photologue)\n- iOS version / product type compatibility check\n- version history \u0026 downgrade support\n- download count \u0026 statistics\n- scheduled tasks\n- multiple users / groups\n- CDN/OSS friendly\n- [GPG signature](https://wiki.debian.org/SecureApt)\n- supports [Docker](https://www.docker.com/)\n\n\n## 1.2. TODOs\n\u003ca id=\"markdown-todos\" name=\"todos\"\u003e\u003c/a\u003e\n\n- apt pdiff feature\n- support for commercial packages\n- more themes\n\n\n# 2. DEMO\n\u003ca id=\"markdown-demo\" name=\"demo\"\u003e\u003c/a\u003e\n\nThis demo is deployed using [Container Optimized OS](https://cloud.google.com/community/tutorials/docker-compose-on-container-optimized-os) on [Google Cloud](https://cloud.google.com/).\n\n[https://apt.82flex.com/](https://apt.82flex.com/)\n\n* Username: `root`\n* Password: `dcrmpass`\n\nWatch the guide video: [https://youtu.be/dvNCRckm2Cc](https://youtu.be/dvNCRckm2Cc)\n\n\n# 3. DOCKER DEPLOY 自动部署\n\u003ca id=\"markdown-docker-deploy-自动部署\" name=\"docker-deploy-自动部署\"\u003e\u003c/a\u003e\n\n以下步骤能完整部署 DCRM 最新副本, 启用了任务队列及页面缓存支持, 你可以根据需要调整自己的配置.\n\n1. 如果你还没有下载此项目, 建议使用 `git` 克隆该仓库:\n\n```\n# download this project or clone this git repo:\ngit clone --depth 1 https://github.com/82Flex/DCRM.git \u0026\u0026 cd DCRM\n```\n\n2. 构建并启动 DCRM 容器:\n\n```\n# build and launch DCRM via `docker-compose`\ndocker-compose up --build --detach\n```\n\n3. 先附加到容器中:\n\n```\n# attach to `dcrm_app` container\ndocker exec -i -t dcrm_app /bin/bash\n```\n\n4. execute in **container**:\n在容器中执行命令:\n\n```\n# collect static files\npython manage.py collectstatic --no-input\n\n# create required database structures\npython manage.py migrate\n\n# create super user in database\npython manage.py createsuperuser\n```\n\n5. access admin panel via `http://127.0.0.1/admin/`, you can upload packages via HTTP or FTP:\n现在可以尝试访问 DCRM 后台了, 你可以通过 HTTP 或 FTP 方式上传软件包:\n\n- Default FTP username: `dcrm`\n- Default FTP password: `dcrm_ftp_password`\n\n\n## 3.1. Docker Commands 常用命令\n\u003ca id=\"markdown-docker-commands-常用命令\" name=\"docker-commands-常用命令\"\u003e\u003c/a\u003e\n\n1. 重新构建并在后台启动 DCRM (仅当代码发生变动, 不会影响数据)\n\n```\n# build and launch DCRM in background (when source code changed)\ndocker-compose up --build --detach\n```\n\n2. 仅在后台启动 DCRM\n\n```\n# launch DCRM in background\ndocker-compose up --detach\n```\n\n3. 在前台启动 DCRM\n\n```\n# launch DCRM in foreground to see what happens\ndocker-compose up\n```\n\n4. 停止 DCRM\n\n```\n# shutdown DCRM\ndocker-compose down\n```\n\n\n## 3.2. Basic Configuration\n\u003ca id=\"markdown-basic-configuration\" name=\"basic-configuration\"\u003e\u003c/a\u003e\n\nhere are a few steps you need to follow:\n\nedit `docker/nginx/conf.d/default.conf`:\n\n1. set `server_name` to your domain\n2. [configure your https server](http://nginx.org/en/docs/http/configuring_https_servers.html)\n\n\nedit `DCRM/.env`:\n\n1. `DCRM_HOST`\n2. `DCRM_DEBUG`: set it to `0` if you're providing subscription to others\n3. `DCRM_SECURE_SSL`: set it to `1` if you have https certs and properly configured\n4. `DCRM_SECRET_KEY`: set it to a random, unique string\n5. `DCRM_TIME_ZONE`\n\n\nedit `docker-compose.yml`:\n\n1. change default FTP username and password in `services:pure-ftpd:environment`, `FTP_USER_NAME` and `FTP_USER_PASS`, enable [FTP over TLS](https://github.com/stilliard/docker-pure-ftpd#TLS) if you want\n\n\n## 3.3. Configure GnuPG\n\u003ca id=\"markdown-configure-gnupg\" name=\"configure-gnupg\"\u003e\u003c/a\u003e\n\n```\n# 1. attach to `dcrm_app` container\ndocker exec -i -t dcrm_app /bin/bash\n\n# 2. generate new GPG key\ngpg --gen-key --homedir .gnupg\n# or\n# gpg --allow-secret-key-import --import private.key --homedir .gnupg\n\n# 3. enable GPG feature and configure passphrase in `WEIPDCRM -\u003e Settings -\u003e Security`\n# 4. create APT verification package in `WEIPDCRM -\u003e Sections -\u003e Action -\u003e Generate icon package for selected sections`, which will install GPG public key to user's device\n```\n\n\n# 4. PUBLISH REPOSITORY 发布软件源\n\u003ca id=\"markdown-publish-repository-发布软件源\" name=\"publish-repository-发布软件源\"\u003e\u003c/a\u003e\n\nBefore you publish your repository, there are a few steps you should follow:\n部署完成后, 你还需要一些步骤来发布你的软件源:\n\n1. `Sites`\n\nSet domains and site names.\n在 Sites 中设置域名和站点名称\n\n2. `WEIPDCRM -\u003e Settings`\n3. `WEIPDCRM -\u003e Releases`\n\nAdd a new release and set it as an active release.\n添加新的 Release 并将其设置为活跃状态\n\n4. `WEIPDCRM -\u003e Sections`\n5. `WEIPDCRM -\u003e Upload -\u003e New Package`\n\nUpload your debian package via HTTP or FTP.\n上传你的 deb 包\n\n6. `WEIPDCRM -\u003e Versions`\n\nEnable package versions and assign them into sections.\n记得启用你的 deb 包 (默认不启用), 并且将它们分配到源分类当中\n\n7. `WEIPDCRM -\u003e Builds`\n\nBuild the repository to apply all the changes, thus you cannot add this repo in Cydia.\n构建全源, 让所有更改生效 (第一次构建前, Cydia 中是无法添加该源的)\n\n\n# 5. MANUALLY DEPLOY 手动部署\n\u003ca id=\"markdown-manually-deploy-手动部署\" name=\"manually-deploy-手动部署\"\u003e\u003c/a\u003e\n\n## 5.1. ENVIRONMENT 环境\n\u003ca id=\"markdown-environment-环境\" name=\"environment-环境\"\u003e\u003c/a\u003e\n\n- gzip, bzip2, **xz (xz-devel)**\n- Python 3.7 (*CentOS: if compiled from source, make sure package `xz-devel` is installed*)\n- Django 1.11+\n- MySQL (or MariaDB)\n- Redis (optional)\n- memcached (optional)\n- uwsgi, Nginx (production only)\n- vsftpd (or pure-ftpd, optional)\n\n\n## 5.2. EXAMPLE 示例\n\u003ca id=\"markdown-example-示例\" name=\"example-示例\"\u003e\u003c/a\u003e\n\n1. install dependencies:\n安装依赖:\n\n```\napt-get update\napt-get upgrade\napt-get install git mysql-server libmysqlclient-dev python3-dev python3-pip libjpeg-dev tzdata\n```\n\n2. configure mysql:\n安装完成后, 登录到 mysql:\n\n```\nservice mysql start\nmysql_secure_installation\nmysql -uroot -p\n```\n\n3. create a database for this DCRM instance:\n新建 DCRM 数据库:\n\n```sql\nCREATE DATABASE `DCRM` DEFAULT CHARSET UTF8;\n```\n\n4. create mysql user `dcrm` and grant privileges:\n新建 dcrm 用户并设置密码:\n\n```sql\nCREATE USER 'dcrm'@'localhost' IDENTIFIED BY 'thisisthepassword';\nGRANT ALL PRIVILEGES ON `DCRM`.* TO 'dcrm'@'localhost';\nFLUSH PRIVILEGES;\n```\n\n5. clone this git repo:\n在合适的位置克隆 DCRM:\n\n```\nmkdir -p /wwwdata\ncd /wwwdata\ngit clone --depth 1 https://github.com/82Flex/DCRM.git\ncd /wwwdata/DCRM\n```\n\n6. install python modules, `virtualenv` is recommended if you want:\n安装必要的 python 模块:\n\n```\npip3 install -r requirements.txt\nmysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -D mysql -u root -p\n```\n\n7. enable redis support (task queue):\n如果你还需要开启 Redis 支持 (用于任务队列):\n\n```\napt-get install redis-server\nservice redis-server start\n```\n\n8. enable memcached support (page caching):\n如果你还需要开启页面缓存, 你可能还需要自行启动 memcached 服务:\n\n```\napt-get install memcached\nservice memcached start\n```\n\n9. modify `DCRM/.env`:\n\n- `DCRM_DEBUG=1` for debugging, `DCRM_DEBUG=0` for production\n- `DCRM_HOST`: add your domain\n- `DCRM_SECRET_KEY`: set it to a random, unique string\n- `DCRM_MYSQL_*`: your mysql configurations, you may use different 'DATABASE' across DCRM instances\n- `DCRM_REDIS_*`: your redis configurations, you may use different 'DB' numbers across DCRM instances\n- `DCRM_MEMCACHED_*`: your memcached configurations\n- `DCRM_LANGUAGE_CODE` and `DCRM_TIME_ZONE`\n- optional features: `DCRM_ENABLE_REDIS`, `DCRM_ENABLE_CACHE`, `DCRM_ENABLE_API`\n\n10. collect static files:\n同步静态文件:\n\n```\npython3 manage.py collectstatic\n```\n\n11. migrate database and create new super user:\n同步数据库结构并创建超级用户:\n\n```\npython3 manage.py migrate\npython3 manage.py createsuperuser\n```\n\n12. run debug server:\n启动测试服务器:\n\n```\npython3 manage.py runserver\n```\n\n13. access admin panel via `http://127.0.0.1:8000/admin/`\n\n\n## 5.3. IN PRODUCTION 生产环境示例\n\u003ca id=\"markdown-in-production-生产环境示例\" name=\"in-production-生产环境示例\"\u003e\u003c/a\u003e\n\n生产环境的配置需要有一定的服务器运维经验, 如果你在生产环境的配置过程中遇到困难, 我们提供付费的疑难解答.\n\nWe assumed that nginx uses `www-data` as its user and group.\n假设 nginx 使用 `www-data` 用作其用户名和用户组名.\n\n\n### 5.3.1. Configure UWSGI\n\u003ca id=\"markdown-configure-uwsgi\" name=\"configure-uwsgi\"\u003e\u003c/a\u003e\n\nhere is an example of `uwsgi.ini`:\n\n```ini\n[uwsgi]\n\nchdir = /home/DCRM\nmodule = DCRM.wsgi\n\nmaster = true\nprocesses = 4\nenable-threads = true\nthreads = 2\nthunder-lock = true\nsocket = :8001\nvaccum = true\nuid = www-data\ngid = www-data\nsafe-pidfile = /home/run/uwsgi-apt.pid\n; daemonize = /dev/null\n```\n\n\n### 5.3.2. UWSGI Commands\n\u003ca id=\"markdown-uwsgi-commands\" name=\"uwsgi-commands\"\u003e\u003c/a\u003e\n\n```\n# test\nuwsgi --ini uwsgi.ini\n\n# run\nuwsgi --ini uwsgi.ini --daemonize=/dev/null\n\n# kill\nkill -INT `cat /home/run/uwsgi-apt.pid`\n```\n\n\n### 5.3.3. Configure Nginx/Apache\n\u003ca id=\"markdown-configure-nginx\" name=\"configure-nginx\"\u003e\u003c/a\u003e\n\nhere is an example of nginx https site configuration file:\n\n```nginx\nupstream django {\n    server 127.0.0.1:8001;  # to match your uwsgi configuration\n}\nserver {\n    listen 80;\n    server_name apt.82flex.com;  # your domain\n    rewrite ^/(.*)$ https://apt.82flex.com/$1 permanent;  # redirect to https\n}\nserver {\n    listen 443 ssl;\n\n    ssl_certificate /wwwdata/ssl/1_apt.82flex.com_bundle.crt;  # your ssl cert\n    ssl_certificate_key /wwwdata/ssl/2_apt.82flex.com.key;  # your ssl key\n    ssl_session_timeout 5m;\n    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;\n    ssl_ciphers \"EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5\";\n    ssl_prefer_server_ciphers on;\n\n    server_name apt.82flex.com;  # your domain\n    root /wwwdata/wwwroot;  # specify a web root, not the DCRM directory\n    error_page 497 https://$host$uri?$args;\n    server_name_in_redirect off;\n    index index.html;\n    \n    location = / {\n        # only enable this section if you want to use DCRM as your home page\n        rewrite ^ /index/ last;\n    }\n    \n    location / {\n        # only enable this section if you want to use DCRM as your default pages\n        try_files $uri $uri/ @djangosite;\n    }\t\n    \n    location ~^/static/(.*)$ {\n        # static files for DCRM, you can change its path in settings.py\n        alias /wwwdata/DCRM/static/$1;  # make an alias for static files\n    }\n\n    location ~^/resources/(.*)$ {\n        # resources for DCRM, including debian packages and icons, you can change it in WEIPDCRM \u003e Settings in admin panel\n        alias /wwwdata/DCRM/resources/$1;  # make an alias for resources\n        \n        # Aliyun CDN/OSS:\n        # you can mount '/wwwdata/DCRM/resources' to oss file system\n        # then rewrite this path to oss/cdn url for a better performance\n    }\n    \n    location ~^/((CydiaIcon.png)|(Release(.gpg)?)|(Packages(.gz|.bz2)?))$ {\n        # Cydia meta resources, including Release, Release.gpg, Packages and CydiaIcon\n        \n        # Note:\n        # 'releases/(\\d)+/$1' should contain `active_release.id`, which is set in Settings tab.\n        alias /wwwdata/DCRM/resources/releases/1/$1;  # make an alias for Cydia meta resources\n    }\n    \n    location @djangosite {\n        uwsgi_pass django;\n        include /etc/nginx/uwsgi_params;\n    }\n    \n    location ~* .(ico|gif|bmp|jpg|jpeg|png|swf|js|css|mp3|m4a|m4v|mp4|ogg|aac)$ {\n        expires 7d;\n    }\n    \n    location ~* .(gz|bz2)$ {\n        expires 12h;\n    }\n}\n```\n\nhere is an example of apache virtual host configuration file:\n\n```apache\nAlias /static        /home/DCRM/static\nAlias /resources     /home/DCRM/resources\nAlias /CydiaIcon.png /home/DCRM/resources/releases/1/CydiaIcon.png\nAlias /Release       /home/DCRM/resources/releases/1/Release\nAlias /Release.gpg   /home/DCRM/resources/releases/1/Release.gpg\nAlias /Packages      /home/DCRM/resources/releases/1/Packages\nAlias /Packages.gz   /home/DCRM/resources/releases/1/Packages.gz\nAlias /Packages.bz2  /home/DCRM/resources/releases/1/Packages.bz2\n\n\u003cIfModule mod_proxy_uwsgi.c\u003e\n  ProxyPreserveHost On\n  ProxyPass /static !\n  ProxyPass /resources !\n  ProxyPass /CydiaIcon.png !\n  ProxyPass /Release !\n  ProxyPass /Release.gpg !\n  ProxyPass /Packages !\n  ProxyPass /Packages.gz !\n  ProxyPass /Packages.bz2 !\n  ProxyPass / uwsgi://127.0.0.1:8001/\n\u003c/IfModule\u003e\n\n\u003cIfModule mod_expires.c\u003e\n  ExpiresActive On\n  ExpiresByType image/png \"access 7 days\"\n  ExpiresByType image/gif \"access 7 days\"\n  ExpiresByType image/jpeg \"access 7 days\"\n  ExpiresByType text/javascript \"access 2 weeks\"\n  ExpiresByType text/css \"access 2 weeks\"\n  ExpiresByType text/html \"modification 4 hours\"\n  ExpiresDefault \"access 2 hours\"\n\u003c/IfModule\u003e\n```\n\n\n### 5.3.4. NGINX Commands\n\u003ca id=\"markdown-nginx-commands\" name=\"nginx-commands\"\u003e\u003c/a\u003e\n\n```\n# install Nginx\napt-get install nginx\n\n# launch Nginx\nservice nginx start\n\n# test Nginx configuration\nnginx -t\n\n# reload configuration\nnginx -s reload\n\n# launch nginx if it is down\nsudo /etc/init.d/nginx start\n```\n\n\n### 5.3.5. Configure Workers\n\u003ca id=\"markdown-configure-workers\" name=\"configure-workers\"\u003e\u003c/a\u003e\n\n```\n# launch task queue with the same nginx working user (www/www-data)\nsu www-data\n\n# if you cannot switch to user `www-data`, remember to change its login prompt in `/etc/passwd`. launch some workers for DCRM background queue\nnohup ./manage.py rqworker high \u003e /dev/null \u0026\nnohup ./manage.py rqworker default \u003e /dev/null \u0026\n\n# you need at least one worker for each queue\n```\n\nworker 的数量以你的具体需求为准, 但是各队列中至少要有一个活跃 worker, 否则队列中的任务将一直保持挂起.\n\n\n### 5.3.6. Configure GnuPG\n\u003ca id=\"markdown-configure-gnupg\" name=\"configure-gnupg\"\u003e\u003c/a\u003e\n\n```\n# 1. install `gnupg2`\napt-get install gnupg2\n\n# 2. make sure to launch background queue with the same nginx working user (www/www-data)\nsu www-data\n\n# 3. generate new GPG key\ngpg --gen-key --homedir .gnupg\n# or\n# gpg --allow-secret-key-import --import private.key --homedir .gnupg\n\n# 4. enable GPG feature and configure passphrase in `WEIPDCRM -\u003e Settings -\u003e Security`\n# 5. create APT verification package in `WEIPDCRM -\u003e Sections -\u003e Action -\u003e Generate icon package for selected sections`, which will install GPG public key to user's device\n```\n\n\n# 6. CONTRIBUTORS\n\u003ca id=\"markdown-contributors\" name=\"contributors\"\u003e\u003c/a\u003e\n\n- Py: [Lessica](mailto:82flex@gmail.com)\n- Py: [Hintay](https://weibo.com/Hintay)\n- Web: [0xJacky](mailto:jacky-943572677@qq.com)\n- Translation (Arabic): [Albirkawi](mailto:Dev.mohammed.iq@gmail.com)\n- Translation (Simplified Chinese): [Lessica](mailto:82flex@gmail.com)\n\n\n# 7. LICENSE 版权声明\n\u003ca id=\"markdown-license-版权声明\" name=\"license-版权声明\"\u003e\u003c/a\u003e\n\nAs long as you do not use the DCRM in a business or money-making venture, it is free for your own personal use. If you use DCRM in commercial projects (e.g. hosting commercial packages), please consider buy a commercial license.\n\nPayPal receipt is valid proof of purchase of DCRM licence.\n\n**SINGLE: Use DCRM in one commercial project**\n\n[![paypal](https://www.paypalobjects.com/en_US/GB/i/btn/btn_buynowCC_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=772TAEU53AXFY)\n\n**UNLIMITED: Use DCRM in unlimited commercial projects**\n\n[![paypal](https://www.paypalobjects.com/en_US/GB/i/btn/btn_buynowCC_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=M2DGSYVJASPAL)\n\n\n----\n\n\nCopyright © 2013-2020 Lessica, Hintay, 0xJacky and all DCRM contributors\n    \nThe program is distributed under the terms of the GNU Affero General Public License.\n\nThis program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public License along with this program.  If not, see \u003chttp://www.gnu.org/licenses/\u003e.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F82Flex%2FDCRM","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F82Flex%2FDCRM","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F82Flex%2FDCRM/lists"}