iamt 1.1.27__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- iamt/__init__.py +67 -0
- iamt/__main__.py +5 -0
- iamt/client_config/client_config.py +354 -0
- iamt/completers/customCompleter.py +143 -0
- iamt/composes/5425CICD/gitea/.rdm.md +4 -0
- iamt/composes/5425CICD/gitea/docker-compose.yml +52 -0
- iamt/composes/5425CICD/gitlab/.rdm.md +20 -0
- iamt/composes/5425CICD/gitlab/config/ssl/.gitkeep +0 -0
- iamt/composes/5425CICD/gitlab/docker-compose.yml +32 -0
- iamt/composes/5425CICD/gitlabDocs/.rdm.md +3 -0
- iamt/composes/5425CICD/gitlabRunner/.rdm.md +5 -0
- iamt/composes/5425CICD/sonarQube/.rdm.md +14 -0
- iamt/composes/5425CICD/sonarQube/docker-compose.yml +46 -0
- iamt/composes/5425CICD/sonarQube/docker-compose3.yml +41 -0
- iamt/composes/5425CICD/sonarQube/docker-compose4.yml +33 -0
- iamt/composes/5425CICD/sonarQube/sonarqube_conf/.gitkeep +0 -0
- iamt/composes/5425CICD/sonarQube/sonarqube_data/.gitkeep +0 -0
- iamt/composes/5425CICD/sonarQube/sonarqube_extensions/.gitkeep +0 -0
- iamt/composes/5425CICD/sonarQube/sonarqube_logs/.gitkeep +0 -0
- iamt/composes/5425CICD/sonarQube/sonarqube_temp/.gitkeep +0 -0
- iamt/composes/5435PROMPT/.rdm.md +11 -0
- iamt/composes/5435PROMPT/langfuse/.env +276 -0
- iamt/composes/5435PROMPT/langfuse/.rdm.md +3 -0
- iamt/composes/5435PROMPT/langfuse/docker-compose.yml +166 -0
- iamt/composes/5435PROMPT/prompt-optimizer/.rdm.md +3 -0
- iamt/composes/5465BASE/alpine/.rdm.md +6 -0
- iamt/composes/5465BASE/mysql/.rdm.md +40 -0
- iamt/composes/5465BASE/mysql/conf/my.cnf +52 -0
- iamt/composes/5465BASE/mysql/docker-compose.yml +31 -0
- iamt/composes/5465BASE/mysql/init/01-init.sql +14 -0
- iamt/composes/5465BASE/nginx/.rdm.md +16 -0
- iamt/composes/5465BASE/nginx/docker-compose.yml +29 -0
- iamt/composes/5465BASE/nginx/html/index.html +11 -0
- iamt/composes/5465BASE/nginx/nginx/conf.d/default.conf +22 -0
- iamt/composes/5465BASE/nginx/nginx/nginx.conf +35 -0
- iamt/composes/5465BASE/node/.rdm.md +0 -0
- iamt/composes/5465BASE/node/docker-compose.yml +0 -0
- iamt/composes/5465BASE/php/.rdm.md +0 -0
- iamt/composes/5465BASE/php/docker-compose.yml +0 -0
- iamt/composes/5465BASE/redis/.env +11 -0
- iamt/composes/5465BASE/redis/.rdm.md +7 -0
- iamt/composes/5465BASE/redis/config/redis.conf +57 -0
- iamt/composes/5465BASE/redis/docker-compose.yml +35 -0
- iamt/composes/5475TTS/GPTsovits/.rdm.md +4 -0
- iamt/composes/5475TTS/GPTsovits/docker-compose.yml +34 -0
- iamt/composes/5475TTS/indexTTS/.rdm.md +3 -0
- iamt/composes/5485MCP/.rdm.md +5 -0
- iamt/composes/5485MCP/mcpGateway/.rdm.md +2 -0
- iamt/composes/5485MCP/mcpGateway/docker-compose.yml +0 -0
- iamt/composes/5485MCP/mcpProxy/.rdm.md +2 -0
- iamt/composes/5485MCP/mcpProxy/config.json +53 -0
- iamt/composes/5485MCP/mcpProxy/docker-compose.yml +34 -0
- iamt/composes/5485MCP/superGateway/.env +2 -0
- iamt/composes/5485MCP/superGateway/.rdm.md +17 -0
- iamt/composes/5485MCP/superGateway/docker-compose.yml +21 -0
- iamt/composes/5495LLM/ollama_nvidia/.rdm.md +21 -0
- iamt/composes/5495LLM/ollama_nvidia/docker-compose.yml +24 -0
- iamt/composes/5555RAG/QAnything/.rdm.md +5 -0
- iamt/composes/5555RAG/bisheng/.rdm.md +4 -0
- iamt/composes/5555RAG/devdocs/.rdm.md +4 -0
- iamt/composes/5555RAG/devdocs/docker-compose.yml +81 -0
- iamt/composes/5555RAG/kotaemon/.rdm.md +3 -0
- iamt/composes/5555RAG/kotaemon/docker-compose.yml +3 -0
- iamt/composes/5555RAG/llama_index/.rdm.md +3 -0
- iamt/composes/5555RAG/ragflow/.rdm.md +4 -0
- iamt/composes/5555RAG/ragflow/docker-compose.yml +0 -0
- iamt/composes/5556LLMAPI/litellm/.env +29 -0
- iamt/composes/5556LLMAPI/litellm/.rdm.md +17 -0
- iamt/composes/5556LLMAPI/litellm/config.yaml +211 -0
- iamt/composes/5556LLMAPI/litellm/docker-compose.yml +68 -0
- iamt/composes/5556LLMAPI/litellm/prometheus.yml +9 -0
- iamt/composes/5556LLMAPI/newapi/.env +7 -0
- iamt/composes/5556LLMAPI/newapi/docker-compose.yml +54 -0
- iamt/composes/5556LLMAPI/newapi_sqlite/.env +3 -0
- iamt/composes/5556LLMAPI/newapi_sqlite/.rdm.md +15 -0
- iamt/composes/5556LLMAPI/newapi_sqlite/docker-compose.yml +15 -0
- iamt/composes/5556LLMAPI/oneapi/.env +5 -0
- iamt/composes/5556LLMAPI/oneapi/docker-compose.yml +51 -0
- iamt/composes/5556LLMAPI/oneapi_postgresql/docker-compose.yml +51 -0
- iamt/composes/5556LLMAPI/oneapi_sqlite/.rdm.md +10 -0
- iamt/composes/5556LLMAPI/oneapi_sqlite/docker-compose.yml +15 -0
- iamt/composes/5557AICLIENT/chatgpt-web-midjourney-proxy/.rdm.md +4 -0
- iamt/composes/5557AICLIENT/librechat/.env +511 -0
- iamt/composes/5557AICLIENT/librechat/.env.example +509 -0
- iamt/composes/5557AICLIENT/librechat/README.md +10 -0
- iamt/composes/5557AICLIENT/librechat/docker-compose.override.yml +21 -0
- iamt/composes/5557AICLIENT/librechat/docker-compose.yml +70 -0
- iamt/composes/5557AICLIENT/librechat/librechat.yaml +19 -0
- iamt/composes/5557AICLIENT/librechat/litellm-config.yml +21 -0
- iamt/composes/5557AICLIENT/librechat_oneapi/.env +535 -0
- iamt/composes/5557AICLIENT/librechat_oneapi/.rdm.md +19 -0
- iamt/composes/5557AICLIENT/librechat_oneapi/docker-compose.override.yml +14 -0
- iamt/composes/5557AICLIENT/librechat_oneapi/docker-compose.yml +72 -0
- iamt/composes/5557AICLIENT/librechat_oneapi/librechat.yaml +42 -0
- iamt/composes/5557AICLIENT/nextChat/.rdm.md +13 -0
- iamt/composes/5557AICLIENT/nextChat/docker-compose.yml +2 -0
- iamt/composes/5557AICLIENT/openwebui/.env +15 -0
- iamt/composes/5557AICLIENT/openwebui/.rdm.md +6 -0
- iamt/composes/5557AICLIENT/openwebui/docker-compose.yml +33 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/.env +193 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/.rdm.md +15 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/atlas/README.md +71 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/atlas/atlas.hcl +12 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/atlas/migrations/20250703095335_initial.sql +90 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/atlas/migrations/20250703115304_update.sql +2 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/atlas/migrations/20250704040445_update.sql +2 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/atlas/migrations/20250708075302_update.sql +10 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/atlas/migrations/20250710100212_update.sql +38 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/atlas/migrations/20250711034533_update.sql +8 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/atlas/migrations/20250717125913_update.sql +12 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/atlas/migrations/atlas.sum +8 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/atlas/opencoze_latest_schema.hcl +4057 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/model/model_template_qwen.yaml +106 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/model/template/model_template_ark.yaml +133 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/model/template/model_template_ark_doubao-1.5-lite.yaml +108 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/model/template/model_template_ark_doubao-1.5-pro-256k.yaml +108 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/model/template/model_template_ark_doubao-1.5-pro-32k.yaml +108 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/model/template/model_template_ark_doubao-1.5-thinking-pro.yaml +131 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/model/template/model_template_ark_doubao-1.5-thinking-vision-pro.yaml +132 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/model/template/model_template_ark_doubao-1.5-vision-lite.yaml +131 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/model/template/model_template_ark_doubao-1.5-vision-pro.yaml +132 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/model/template/model_template_ark_doubao-seed-1.6-flash.yaml +132 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/model/template/model_template_ark_doubao-seed-1.6-thinking.yaml +132 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/model/template/model_template_ark_doubao-seed-1.6.yaml +132 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/model/template/model_template_ark_volc_deepseek-r1.yaml +108 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/model/template/model_template_ark_volc_deepseek-v3.yaml +108 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/model/template/model_template_basic.yaml +201 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/model/template/model_template_claude.yaml +90 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/model/template/model_template_deepseek.yaml +107 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/model/template/model_template_gemini.yaml +139 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/model/template/model_template_ollama.yaml +84 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/model/template/model_template_openai.yaml +171 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/model/template/model_template_qwen.yaml +106 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/plugin/common/oauth_schema.json +42 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/plugin/pluginproduct/bocha_search.yaml +179 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/plugin/pluginproduct/chestnut_sign.yaml +50 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/plugin/pluginproduct/gaode_map.yaml +754 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/plugin/pluginproduct/image_compression.yaml +58 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/plugin/pluginproduct/lark_authentication_authorization.yaml +56 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/plugin/pluginproduct/lark_base.yaml +1172 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/plugin/pluginproduct/lark_calendar.yaml +479 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/plugin/pluginproduct/lark_docx.yaml +552 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/plugin/pluginproduct/lark_message.yaml +499 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/plugin/pluginproduct/lark_sheet.yaml +795 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/plugin/pluginproduct/lark_task.yaml +409 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/plugin/pluginproduct/lark_wiki.yaml +95 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/plugin/pluginproduct/library_search.yaml +73 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/plugin/pluginproduct/maker_smart_design.yaml +82 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/plugin/pluginproduct/plugin_meta.yaml +913 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/plugin/pluginproduct/sky_eye_check.yaml +431 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/plugin/pluginproduct/sohu_hot_news.yaml +69 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/plugin/pluginproduct/wolfram_alpha.yaml +100 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/plugin/pluginproduct/worth_buying.yaml +77 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/prompt/messages_to_query_template_jinja2.json +10 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/backend/conf/prompt/nl2sql_template_jinja2.json +10 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/docker-compose.yml +549 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/proxy/go.mod +3 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/proxy/proxy.go +100 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/elasticsearch/analysis-smartcn.zip +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/elasticsearch/elasticsearch.yml +14 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/elasticsearch/es_index_schema/coze_resource.index-template.json +74 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/elasticsearch/es_index_schema/project_draft.index-template.json +79 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/elasticsearch/setup_es.sh +142 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/etcd/etcd.conf.yml +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/.mc/config.json +1 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/claude_v2.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/connector-api.jpg +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/connector-chat-sdk.jpg +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/connector-coze.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/deepseek_v2.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/default_agent_icon.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/default_app_icon.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/default_database_icon.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/default_dataset_icon.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/default_prompt_icon.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/default_workflow_icon.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/doubao_v2.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/gemini_v2.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/image_kn_default_icon.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/ollama.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/openai_v2.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/plugin_default_icon.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/qwen_v2.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/shortcut_10coz_folder.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/shortcut_11coz_trans_switch.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/shortcut_12coz_location.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/shortcut_13coz_link.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/shortcut_14coz_clock.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/shortcut_1coz_ai.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/shortcut_2icon_ai_writing.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/shortcut_3coz_imageflow.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/shortcut_4icon_aisearch.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/shortcut_5icon_summary.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/shortcut_6icon_digest.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/shortcut_7icon_video.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/shortcut_8icon_audio.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/shortcut_9coz_variables.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/table_kn_default_icon.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/team_default_icon.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/template_7416518827749425204.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/template_7418535986059067392.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/text_kn_default_icon.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/default_icon/user_default_icon.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/official_plugin_icon/plugin_ai_ppt.jpeg +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/official_plugin_icon/plugin_bocha_search.jpeg +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/official_plugin_icon/plugin_chat_ppt.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/official_plugin_icon/plugin_chestnut_sign.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/official_plugin_icon/plugin_constellation.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/official_plugin_icon/plugin_gaode_map.jpeg +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/official_plugin_icon/plugin_image_compression.jpeg +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/official_plugin_icon/plugin_lark_authentication_authorization.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/official_plugin_icon/plugin_lark_base.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/official_plugin_icon/plugin_lark_calendar.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/official_plugin_icon/plugin_lark_docx.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/official_plugin_icon/plugin_lark_message.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/official_plugin_icon/plugin_lark_sheet.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/official_plugin_icon/plugin_lark_task.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/official_plugin_icon/plugin_lark_wiki.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/official_plugin_icon/plugin_library_search.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/official_plugin_icon/plugin_liepin.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/official_plugin_icon/plugin_maker_smart_design.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/official_plugin_icon/plugin_sky_eye_check.jpeg +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/official_plugin_icon/plugin_sohu_hot_news.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/official_plugin_icon/plugin_wolfram_alpha.png +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/minio/official_plugin_icon/plugin_worth_buying.jpeg +0 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/mysql/schema.sql +836 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/mysql/sql_init.sql +666 -0
- iamt/composes/5558AIWORKFLOW/coze_studio/volumes/rocketmq/broker.conf +28 -0
- iamt/composes/5558AIWORKFLOW/dify/.env +1090 -0
- iamt/composes/5558AIWORKFLOW/dify/.rdm.md +11 -0
- iamt/composes/5558AIWORKFLOW/dify/certbot/README.md +76 -0
- iamt/composes/5558AIWORKFLOW/dify/certbot/docker-entrypoint.sh +30 -0
- iamt/composes/5558AIWORKFLOW/dify/certbot/update-cert.template.txt +19 -0
- iamt/composes/5558AIWORKFLOW/dify/couchbase-server/Dockerfile +4 -0
- iamt/composes/5558AIWORKFLOW/dify/couchbase-server/init-cbserver.sh +44 -0
- iamt/composes/5558AIWORKFLOW/dify/docker-compose.yml +1174 -0
- iamt/composes/5558AIWORKFLOW/dify/elasticsearch/docker-entrypoint.sh +25 -0
- iamt/composes/5558AIWORKFLOW/dify/image.png +0 -0
- iamt/composes/5558AIWORKFLOW/dify/nginx/conf.d/default.conf.template +48 -0
- iamt/composes/5558AIWORKFLOW/dify/nginx/docker-entrypoint.sh +42 -0
- iamt/composes/5558AIWORKFLOW/dify/nginx/https.conf.template +9 -0
- iamt/composes/5558AIWORKFLOW/dify/nginx/nginx.conf.template +34 -0
- iamt/composes/5558AIWORKFLOW/dify/nginx/proxy.conf.template +11 -0
- iamt/composes/5558AIWORKFLOW/dify/nginx/ssl/.gitkeep +0 -0
- iamt/composes/5558AIWORKFLOW/dify/pgvector/docker-entrypoint.sh +24 -0
- iamt/composes/5558AIWORKFLOW/dify/ssrf_proxy/docker-entrypoint.sh +42 -0
- iamt/composes/5558AIWORKFLOW/dify/ssrf_proxy/squid.conf.template +56 -0
- iamt/composes/5558AIWORKFLOW/dify/startupscripts/init.sh +13 -0
- iamt/composes/5558AIWORKFLOW/dify/startupscripts/init_user.script +10 -0
- iamt/composes/5558AIWORKFLOW/dify/tidb/config/pd.toml +4 -0
- iamt/composes/5558AIWORKFLOW/dify/tidb/config/tiflash-learner.toml +13 -0
- iamt/composes/5558AIWORKFLOW/dify/tidb/config/tiflash.toml +19 -0
- iamt/composes/5558AIWORKFLOW/dify/tidb/docker-compose.yaml +62 -0
- iamt/composes/5558AIWORKFLOW/dify/volumes/myscale/config/users.d/custom_users_config.xml +17 -0
- iamt/composes/5558AIWORKFLOW/dify/volumes/oceanbase/init.d/vec_memory.sql +1 -0
- iamt/composes/5558AIWORKFLOW/dify/volumes/opensearch/opensearch_dashboards.yml +222 -0
- iamt/composes/5558AIWORKFLOW/dify/volumes/sandbox/conf/config.yaml +14 -0
- iamt/composes/5558AIWORKFLOW/dify/volumes/sandbox/conf/config.yaml.example +35 -0
- iamt/composes/5558AIWORKFLOW/dify/volumes/sandbox/dependencies/python-requirements.txt +0 -0
- iamt/composes/5558AIWORKFLOW/fastgpt/.rdm.md +14 -0
- iamt/composes/5558AIWORKFLOW/fastgpt/docker-compose-pgvector.yml +177 -0
- iamt/composes/5558AIWORKFLOW/langflow/.rdm.md +9 -0
- iamt/composes/5558AIWORKFLOW/langflow/docker-compose.yml +30 -0
- iamt/composes/5558AIWORKFLOW/n8n/.env +6 -0
- iamt/composes/5558AIWORKFLOW/n8n/.rdm.md +24 -0
- iamt/composes/5558AIWORKFLOW/n8n/docker-compose.yml +52 -0
- iamt/composes/5558AIWORKFLOW/n8n/init-data.sh +13 -0
- iamt/composes/5558AIWORKFLOW/n8n/n8n_storage/.gitkeep +0 -0
- iamt/composes/5559MJAPI/midjourney-proxy/.rdm.md +10 -0
- iamt/composes/5559MJAPI/midjourney-proxy/docker-compose.yml +0 -0
- iamt/composes/5559MJAPI/midjourney-proxy2/.rdm.md +5 -0
- iamt/composes/5559MJAPI/midjourney-proxy2/docker-compose.yml +21 -0
- iamt/composes/5655PROXY/3xui/.rdm.md +12 -0
- iamt/composes/5655PROXY/3xui/docker-compose.yml +15 -0
- iamt/composes/5655PROXY/hui/.rdm.md +6 -0
- iamt/composes/5655PROXY/hui/docker-compose.yml +18 -0
- iamt/composes/5655PROXY/mihomo/.rdm.config.md +17 -0
- iamt/composes/5655PROXY/mihomo/.rdm.md +40 -0
- iamt/composes/5655PROXY/mihomo/clash_meta_config/config.yaml +584 -0
- iamt/composes/5655PROXY/mihomo/clash_meta_config/geoip.metadb +0 -0
- iamt/composes/5655PROXY/mihomo/clash_meta_config/sub1.yaml +7 -0
- iamt/composes/5655PROXY/mihomo/clash_meta_config/sub2.yaml +56 -0
- iamt/composes/5655PROXY/mihomo/docker-compose.yml +33 -0
- iamt/composes/5655PROXY/nginx/.rdm +2 -0
- iamt/composes/5655PROXY/nginx/docker-compose.yml +21 -0
- iamt/composes/5655PROXY/sub-web/.rdm.md +9 -0
- iamt/composes/5655PROXY/sub2clash/.rdm.md +3 -0
- iamt/composes/5655PROXY/sub2clash/docker-compose.yml +21 -0
- iamt/composes/5655PROXY/subconverter/.rdm.md +4 -0
- iamt/composes/5655PROXY/v2ray/.rdm.md +3 -0
- iamt/composes/5655PROXY/v2raya/.rdm.md +33 -0
- iamt/composes/5655PROXY/v2raya/docker-compose.yml +19 -0
- iamt/composes/5655PROXY/xui/.rdm.md +3 -0
- iamt/composes/5755COMFYUI/akegarasu_lora-scripts/.rdm.md +18 -0
- iamt/composes/5755COMFYUI/akegarasu_lora-scripts/Dockerfile-for-Mainland-China +42 -0
- iamt/composes/5755COMFYUI/akegarasu_lora-scripts/docker-compose.yml +39 -0
- iamt/composes/5755COMFYUI/comfyui_boot/.rdm.md +29 -0
- iamt/composes/5755COMFYUI/comfyui_boot/docker-compose.yml +0 -0
- iamt/composes/5755COMFYUI/comfyui_boot_cu121/.env +1 -0
- iamt/composes/5755COMFYUI/comfyui_boot_cu121/.rdm.md +20 -0
- iamt/composes/5755COMFYUI/comfyui_boot_cu121/docker-compose.yml +45 -0
- iamt/composes/5755COMFYUI/comfyui_boot_cu121/storage/.gitkeep +0 -0
- iamt/composes/5755COMFYUI/comfyui_boot_cu124-cn/.rdm.md +22 -0
- iamt/composes/5755COMFYUI/comfyui_boot_cu124-cn/docker-compose.yml +31 -0
- iamt/composes/5755COMFYUI/comfyui_boot_minimal/.rdm.md +26 -0
- iamt/composes/5755COMFYUI/comfyui_boot_minimal/docker-compose.yml +0 -0
- iamt/composes/5755COMFYUI/comfyui_boot_slim/.env +0 -0
- iamt/composes/5755COMFYUI/comfyui_boot_slim/.rdm.md +23 -0
- iamt/composes/5755COMFYUI/comfyui_boot_slim/docker-compose.yml +24 -0
- iamt/composes/5755COMFYUI/swarmui/.rdm.md +5 -0
- iamt/composes/5755COMFYUI/swarmui/docker-compose.yml +38 -0
- iamt/composes/5855MEDIA/any-listen/.rdm.md +7 -0
- iamt/composes/5855MEDIA/any-listen/data/config.cjs +20 -0
- iamt/composes/5855MEDIA/any-listen/docker-compose.yml +10 -0
- iamt/composes/5855MEDIA/blackcandy/.rdm.md +1 -0
- iamt/composes/5855MEDIA/koel/.rdm.md +17 -0
- iamt/composes/5855MEDIA/koel/docker-compose.yml +41 -0
- iamt/composes/5855MEDIA/navidrome/.rdm.md +15 -0
- iamt/composes/5855MEDIA/navidrome/docker-compose.yml +15 -0
- iamt/composes/5955BACKUP/gobackup/.rdm.md +9 -0
- iamt/composes/5955BACKUP/gobackup/docker-compose.yml +19 -0
- iamt/composes/5955BACKUP/gobackup/gobackup/gobackup.yml +5 -0
- iamt/composes/5955BACKUP/rclone/.rdm.md +6 -0
- iamt/composes/5955BACKUP/rclone/docker-compose.yml +0 -0
- iamt/composes/5965SYNC/verysync/.rdm.md +16 -0
- iamt/composes/5965SYNC/verysync/docker-compose.yml +22 -0
- iamt/composes/6055DATABASE/adminer/.rdm.md +13 -0
- iamt/composes/6055DATABASE/cloudbeaver/.rdm.md +10 -0
- iamt/composes/6055DATABASE/mongodb/.env +7 -0
- iamt/composes/6055DATABASE/mongodb/.rdm.md +8 -0
- iamt/composes/6055DATABASE/mongodb/docker-compose.yml +24 -0
- iamt/composes/6055DATABASE/mongodbExpress/.env +10 -0
- iamt/composes/6055DATABASE/mongodbExpress/.rdm.md +14 -0
- iamt/composes/6055DATABASE/mongodbExpress/docker-compose.yml +24 -0
- iamt/composes/6055DATABASE/mysql/.env +0 -0
- iamt/composes/6055DATABASE/mysql/.rdm.md +0 -0
- iamt/composes/6055DATABASE/mysql/docker-compose.yml +26 -0
- iamt/composes/6055DATABASE/mysql/my.cnf +107 -0
- iamt/composes/6155AUTH/authentik/.env +10 -0
- iamt/composes/6155AUTH/authentik/.rdm.md +7 -0
- iamt/composes/6155AUTH/authentik/docker-compose.yml +90 -0
- iamt/composes/6155AUTH/casdoor/conf/app.conf +30 -0
- iamt/composes/6155AUTH/casdoor/docker-compose.yml +20 -0
- iamt/composes/6255Monitor/dcgm_exporter/.rdm.md +5 -0
- iamt/composes/6255Monitor/dcgm_exporter/docker-compose.yml +34 -0
- iamt/composes/6255Monitor/grafana/.env +5 -0
- iamt/composes/6255Monitor/grafana/.rdm.md +0 -0
- iamt/composes/6255Monitor/grafana/docker-compose.yml +22 -0
- iamt/composes/6255Monitor/node_exporter/.env +1 -0
- iamt/composes/6255Monitor/node_exporter/docker-compose.yml +19 -0
- iamt/composes/6255Monitor/prometheus/.env +6 -0
- iamt/composes/6255Monitor/prometheus/.rdm.md +8 -0
- iamt/composes/6255Monitor/prometheus/conf/prometheus.yml +39 -0
- iamt/composes/6255Monitor/prometheus/docker-compose.yml +28 -0
- iamt/composes/6255Monitor/prometheus/prometheus/.gitkeep +0 -0
- iamt/composes/6355SSL/certbot/.rdm.md +4 -0
- iamt/composes/6355SSL/certd/.rdm.md +4 -0
- iamt/composes/6355SSL/certimate/.rdm.md +23 -0
- iamt/composes/6355SSL/certimate/docker-compose.yml +17 -0
- iamt/composes/6455Storage/fileBrowser/.env +5 -0
- iamt/composes/6455Storage/fileBrowser/.rdm.md +17 -0
- iamt/composes/6455Storage/fileBrowser/docker-compose.yml +14 -0
- iamt/composes/6455Storage/fileBrowser/filebrowser.db +0 -0
- iamt/composes/6455Storage/fileBrowser/settings.json +8 -0
- iamt/composes/6455Storage/kskypro/.env +3 -0
- iamt/composes/6455Storage/kskypro/.rdm.md +30 -0
- iamt/composes/6455Storage/kskypro/buildimg/000-default.conf.template +45 -0
- iamt/composes/6455Storage/kskypro/buildimg/Dockerfile +97 -0
- iamt/composes/6455Storage/kskypro/buildimg/LICENSE +661 -0
- iamt/composes/6455Storage/kskypro/buildimg/entrypoint.sh +29 -0
- iamt/composes/6455Storage/kskypro/buildimg/ports.conf.template +2 -0
- iamt/composes/6455Storage/kskypro/buildimg/ssl/certs/ssl-cert-snakeoil.pem +21 -0
- iamt/composes/6455Storage/kskypro/buildimg/ssl/private/ssl-cert-snakeoil.key +28 -0
- iamt/composes/6455Storage/kskypro/docker-compose.yml +43 -0
- iamt/composes/6455Storage/kskypro/env.conf +43 -0
- iamt/composes/6455Storage/kskypro/mysql/conf/.gitkeep +0 -0
- iamt/composes/6455Storage/kskypro/mysql/data/.gitkeep +0 -0
- iamt/composes/6455Storage/kskypro/mysql/log/.gitkeep +0 -0
- iamt/composes/6455Storage/lskypro/.rdm.md +15 -0
- iamt/composes/6455Storage/lskypro/Dockerfile +12 -0
- iamt/composes/6455Storage/lskypro/docker-compose.yml +51 -0
- iamt/composes/6455Storage/minio/.rdm.md +1 -0
- iamt/composes/6455Storage/minio/docker-compose.yml +31 -0
- iamt/composes/6455Storage/nextcloud/.rdm.md +0 -0
- iamt/composes/6455Storage/nextcloud/docker-compose.yml +25 -0
- iamt/composes/6455Storage/seafile/.env +46 -0
- iamt/composes/6455Storage/seafile/.rdm.md +31 -0
- iamt/composes/6455Storage/seafile/caddy.yml +26 -0
- iamt/composes/6455Storage/seafile/seadoc.yml +39 -0
- iamt/composes/6455Storage/seafile/seafile-server.yml +79 -0
- iamt/composes/6555DNS/ddnsgo/.env +8 -0
- iamt/composes/6555DNS/ddnsgo/.rdm.md +7 -0
- iamt/composes/6555DNS/ddnsgo/docker-compose.yml +17 -0
- iamt/composes/6555DNS/lucky/.rdm.md +4 -0
- iamt/composes/6555DNS/lucky/docker-compose.yml +14 -0
- iamt/composes/6655CONTAINER/harbor/.rdm.md +1 -0
- iamt/composes/6755SHOP/dujiaoka/.rdm.md +10 -0
- iamt/composes/6755SHOP/dujiaoka/docker-compose.yml +37 -0
- iamt/composes/6755SHOP/dujiaoka/env.conf +46 -0
- iamt/composes/6755SHOP/dujiaoka/storage/.gitkeep +0 -0
- iamt/composes/6755SHOP/dujiaoka/uploads/.gitkeep +0 -0
- iamt/composes/6755SHOP/dujiaoka2/.rdm.md +3 -0
- iamt/composes/8888Others/apitable/docker-compose.yml +233 -0
- iamt/composes/8888Others/changeDetect/README +18 -0
- iamt/composes/8888Others/changeDetect/docker-compose.yml +44 -0
- iamt/composes/8888Others/codeServer/.rdm.md +7 -0
- iamt/composes/8888Others/codeServer/docker-compose.yml +39 -0
- iamt/composes/8888Others/douyin_tiktok_download_api/.rdm.md +19 -0
- iamt/composes/8888Others/douyin_tiktok_download_api/config.yaml +32 -0
- iamt/composes/8888Others/douyin_tiktok_download_api/docker-compose.yml +17 -0
- iamt/composes/8888Others/kasmweb_chrome/.rdm.md +19 -0
- iamt/composes/8888Others/kasmweb_chrome/docker-compose.yml +17 -0
- iamt/composes/8888Others/meilisearch/.env +10 -0
- iamt/composes/8888Others/meilisearch/config/config.toml +132 -0
- iamt/composes/8888Others/meilisearch/docker-compose.yml +34 -0
- iamt/composes/8888Others/memcached/.env +8 -0
- iamt/composes/8888Others/memcached/docker-compose.yml +20 -0
- iamt/composes/8888Others/minio/docker-compose.yml +20 -0
- iamt/composes/8888Others/minio/minio +9 -0
- iamt/composes/8888Others/neko/README.md +11 -0
- iamt/composes/8888Others/neko/docker-compose.yml +16 -0
- iamt/composes/8888Others/ocrmypdf/README.md +14 -0
- iamt/composes/8888Others/outline/docker-compose.yml +76 -0
- iamt/composes/8888Others/outline/docker.env +164 -0
- iamt/composes/8888Others/outline/redis.conf +0 -0
- iamt/composes/8888Others/pandas_ai/.rdm.md +5 -0
- iamt/composes/8888Others/pandas_ai/docker-compose.yml +49 -0
- iamt/composes/8888Others/rancher/.rdm.md +4 -0
- iamt/composes/8888Others/rustdesk/.env +10 -0
- iamt/composes/8888Others/rustdesk/docker-compose.yml +29 -0
- iamt/composes/8888Others/ttrss/docker-compose.yml +74 -0
- iamt/composes/8888Others/vultrCLI/.rdm.md +9 -0
- iamt/composes/8888Others/wewerss/docker-compose.yml +44 -0
- iamt/dcd/dcd.py +337 -0
- iamt/decorators/singleton.py +224 -0
- iamt/modules/_utils/_utils.py +1 -0
- iamt/modules/_utils/arch.py +22 -0
- iamt/modules/_utils/cleanup_network_config.py +68 -0
- iamt/modules/_utils/github.py +123 -0
- iamt/modules/_utils/setup_apt_sources.py +94 -0
- iamt/modules/_utils/steps.py +26 -0
- iamt/modules/claudecode/claudecode.py +0 -0
- iamt/modules/dcdtask/dcdtask.py +164 -0
- iamt/modules/docker/docker.py +370 -0
- iamt/modules/docker/roles/role.py +54 -0
- iamt/modules/docker/templates/daemon/daemon_multi_mirrors.json +21 -0
- iamt/modules/docker/templates/gpgkey/debian_gpgkey +62 -0
- iamt/modules/docker/templates/gpgkey/ubuntu_gpgkey +62 -0
- iamt/modules/github/ghcli.py +197 -0
- iamt/modules/nvm/nvm.py +183 -0
- iamt/modules/nvm/roles/role.py +24 -0
- iamt/modules/runlinetask/runlinetask.py +22 -0
- iamt/modules/ubuntud/antigravity.py +191 -0
- iamt/modules/ubuntud/chrome.py +111 -0
- iamt/modules/ubuntud/fcitx5.py +0 -0
- iamt/modules/ubuntud/ibus.py +53 -0
- iamt/modules/ubuntud/kiro.py +41 -0
- iamt/modules/ubuntud/rime_ice.py +173 -0
- iamt/modules/ubuntud/roles/role.py +28 -0
- iamt/modules/ubuntud/templates/ibus/ibus_rime.custom.yaml +3 -0
- iamt/modules/ubuntud/v2ray-core.py +238 -0
- iamt/modules/ubuntud/v2rayN.py +127 -0
- iamt/modules/ubuntud/vscode.py +162 -0
- iamt/modules/uv/roles/role.py +56 -0
- iamt/modules/uv/templates/uv.toml +5 -0
- iamt/modules/uv/uv.py +315 -0
- iamt/modules/vagrant/templates/Vagrantfile +25 -0
- iamt/modules/vagrant/vagrant.py +91 -0
- iamt/modules/vboxinit/base_box_init.py +142 -0
- iamt/modules/vboxinit/roles/role.py +15 -0
- iamt/role/role.py +134 -0
- iamt/run_file/run_file.py +121 -0
- iamt/run_line/commands.py +70 -0
- iamt/run_line/run_line.py +78 -0
- iamt/task/task.py +108 -0
- iamt/utils/__init__.py +6 -0
- iamt/utils/config_saver.py +90 -0
- iamt/utils/task_tracker.py +136 -0
- iamt-1.1.27.dist-info/METADATA +19 -0
- iamt-1.1.27.dist-info/RECORD +482 -0
- iamt-1.1.27.dist-info/WHEEL +4 -0
- iamt-1.1.27.dist-info/entry_points.txt +5 -0
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
"""Docker 模块 - 在远程 Linux 虚拟机上安装和配置 Docker CE
|
|
2
|
+
|
|
3
|
+
该模块遵循项目现有的 Fabric task 模式,通过 SSH 连接执行远程命令,
|
|
4
|
+
实现 Docker 的自动化部署。
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
|
|
9
|
+
from fabric import Connection, task
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
# region 模块常量配置
|
|
13
|
+
|
|
14
|
+
# 模板目录路径
|
|
15
|
+
TEMPLATES_DIR = Path(__file__).parent / "templates"
|
|
16
|
+
DAEMON_TEMPLATES_DIR = TEMPLATES_DIR / "daemon"
|
|
17
|
+
|
|
18
|
+
# Docker 版本配置
|
|
19
|
+
DOCKER_EDITION = "ce" # Community Edition
|
|
20
|
+
|
|
21
|
+
# 旧版本包列表 (需要卸载以避免冲突)
|
|
22
|
+
DOCKER_OBSOLETE_PACKAGES = [
|
|
23
|
+
"docker",
|
|
24
|
+
"docker.io",
|
|
25
|
+
"docker-engine",
|
|
26
|
+
"podman-docker",
|
|
27
|
+
"containerd",
|
|
28
|
+
"runc",
|
|
29
|
+
]
|
|
30
|
+
|
|
31
|
+
# 环境变量 (使用英文输出避免中文乱码)
|
|
32
|
+
ENV_LANG_C = {"LANG": "C", "LC_ALL": "C"}
|
|
33
|
+
|
|
34
|
+
# endregion
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
# region Task 函数
|
|
38
|
+
|
|
39
|
+
@task
|
|
40
|
+
def apt_update(conn:Connection):
|
|
41
|
+
conn.sudo("apt-get update")
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
@task
|
|
45
|
+
def uninstall_old_docker(conn: Connection) -> None:
|
|
46
|
+
"""卸载旧版本 Docker 相关包
|
|
47
|
+
|
|
48
|
+
检查并卸载以下旧包以避免与新版本冲突:
|
|
49
|
+
docker, docker.io, docker-engine, podman-docker, containerd, runc
|
|
50
|
+
|
|
51
|
+
如果旧包不存在,将跳过卸载并继续执行。
|
|
52
|
+
"""
|
|
53
|
+
packages = " ".join(DOCKER_OBSOLETE_PACKAGES)
|
|
54
|
+
conn.sudo(f"apt-get remove -y {packages}", warn=True, env=ENV_LANG_C)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
@task
|
|
58
|
+
def install_dependencies(conn: Connection) -> None:
|
|
59
|
+
"""安装 Docker 所需依赖包"""
|
|
60
|
+
conn.sudo(f"apt-get install -y apt-transport-https ca-certificates curl", env=ENV_LANG_C)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
# GPG 密钥配置
|
|
64
|
+
DOCKER_GPG_PATH = "/etc/apt/keyrings/docker.asc"
|
|
65
|
+
DOCKER_GPG_TEMPLATES_DIR = TEMPLATES_DIR / "gpgkey"
|
|
66
|
+
DOCKER_GPG_SHA256 = {
|
|
67
|
+
"debian": "1500c1f56fa9e26b9b8f42452a553675796ade0807cdce11975eb98170b3a570",
|
|
68
|
+
"ubuntu": "1500c1f56fa9e26b9b8f42452a553675796ade0807cdce11975eb98170b3a570",
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
@task
|
|
73
|
+
def setup_gpg_key(conn: Connection, distro: str | None = None) -> bool:
|
|
74
|
+
"""配置 Docker GPG 密钥
|
|
75
|
+
|
|
76
|
+
优先从本地模板上传 GPG 密钥,避免国内网络下载困难
|
|
77
|
+
|
|
78
|
+
Args:
|
|
79
|
+
conn: Fabric 连接对象
|
|
80
|
+
distro: 发行版名称 (debian/ubuntu),默认从 hostvars 获取
|
|
81
|
+
|
|
82
|
+
Returns:
|
|
83
|
+
GPG 密钥校验是否通过
|
|
84
|
+
"""
|
|
85
|
+
# region 获取发行版
|
|
86
|
+
if distro is None:
|
|
87
|
+
distro = conn.hostvars["distribution"]["id"]
|
|
88
|
+
# endregion
|
|
89
|
+
|
|
90
|
+
# region 创建 keyrings 目录
|
|
91
|
+
conn.sudo("install -m 0755 -d /etc/apt/keyrings", env=ENV_LANG_C)
|
|
92
|
+
# endregion
|
|
93
|
+
|
|
94
|
+
# region 上传本地 GPG 密钥
|
|
95
|
+
local_gpg_file = DOCKER_GPG_TEMPLATES_DIR / f"{distro}_gpgkey"
|
|
96
|
+
remote_tmp_path = f"/tmp/{distro}_gpgkey"
|
|
97
|
+
conn.put(str(local_gpg_file), remote_tmp_path)
|
|
98
|
+
conn.sudo(f"mv {remote_tmp_path} {DOCKER_GPG_PATH}", env=ENV_LANG_C)
|
|
99
|
+
conn.sudo(f"chmod a+r {DOCKER_GPG_PATH}", env=ENV_LANG_C)
|
|
100
|
+
print(f"[OK] GPG key uploaded from local template: {local_gpg_file.name}")
|
|
101
|
+
# endregion
|
|
102
|
+
|
|
103
|
+
# region SHA256 校验
|
|
104
|
+
expected_sha256 = DOCKER_GPG_SHA256.get(distro, "")
|
|
105
|
+
if not expected_sha256:
|
|
106
|
+
print(f"[WARN] No expected SHA256 for distro '{distro}', skipping verification")
|
|
107
|
+
return True
|
|
108
|
+
|
|
109
|
+
result = conn.sudo(f"sha256sum {DOCKER_GPG_PATH}", hide=True, env=ENV_LANG_C)
|
|
110
|
+
actual_sha256 = result.stdout.strip().split()[0]
|
|
111
|
+
|
|
112
|
+
if actual_sha256 == expected_sha256:
|
|
113
|
+
print(f"[OK] GPG key SHA256 verified: {actual_sha256}")
|
|
114
|
+
return True
|
|
115
|
+
else:
|
|
116
|
+
print(f"[WARN] GPG key SHA256 mismatch!")
|
|
117
|
+
print(f" Expected: {expected_sha256}")
|
|
118
|
+
print(f" Actual: {actual_sha256}")
|
|
119
|
+
return False
|
|
120
|
+
# endregion
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
# 镜像源配置
|
|
124
|
+
DOCKER_MIRRORS = {
|
|
125
|
+
"official": "https://download.docker.com",
|
|
126
|
+
"cernet": "https://mirrors.cernet.edu.cn/docker-ce",
|
|
127
|
+
"tuna": "https://mirrors.tuna.tsinghua.edu.cn/docker-ce",
|
|
128
|
+
"aliyun": "https://mirrors.aliyun.com/docker-ce",
|
|
129
|
+
"ustc": "https://mirrors.ustc.edu.cn/docker-ce",
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
# APT 源格式模板
|
|
133
|
+
DOCKER_SOURCES_TEMPLATE = "deb [arch={arch} signed-by={gpg_path}] {mirror}/linux/{distro} {codename} stable\n"
|
|
134
|
+
|
|
135
|
+
@task
|
|
136
|
+
def setup_docker_repo(conn: Connection, mirror: str = "cernet") -> None:
|
|
137
|
+
"""配置 Docker APT 源
|
|
138
|
+
|
|
139
|
+
1. 从 hostvars 获取发行版信息
|
|
140
|
+
2. 调用 _generate_docker_sources 生成配置
|
|
141
|
+
3. 写入 /etc/apt/sources.list.d/docker.list
|
|
142
|
+
4. 执行 apt-get update 更新包索引
|
|
143
|
+
|
|
144
|
+
Args:
|
|
145
|
+
conn: Fabric 连接对象
|
|
146
|
+
mirror: 镜像源名称 (official/cernet/tuna/aliyun/ustc) 或完整 URL
|
|
147
|
+
"""
|
|
148
|
+
# region 从 hostvars 获取发行版信息
|
|
149
|
+
distro = conn.hostvars["distribution"]["id"]
|
|
150
|
+
codename = conn.hostvars["distribution"]["codename"]
|
|
151
|
+
arch = normalize_arch(conn.hostvars["architecture"])
|
|
152
|
+
# endregion
|
|
153
|
+
|
|
154
|
+
# region 生成并写入 APT 源配置
|
|
155
|
+
sources_content = _generate_docker_sources(
|
|
156
|
+
mirror=mirror,
|
|
157
|
+
distro=distro,
|
|
158
|
+
codename=codename,
|
|
159
|
+
arch=arch,
|
|
160
|
+
)
|
|
161
|
+
docker_list_path = "/etc/apt/sources.list.d/docker.list"
|
|
162
|
+
tmp_path = "/tmp/docker.list"
|
|
163
|
+
conn.run(f"echo '{sources_content}' > {tmp_path}", env=ENV_LANG_C)
|
|
164
|
+
conn.sudo(f"mv {tmp_path} {docker_list_path}", env=ENV_LANG_C)
|
|
165
|
+
print(f"[OK] Docker APT source written to {docker_list_path}")
|
|
166
|
+
# endregion
|
|
167
|
+
|
|
168
|
+
# region 更新包索引
|
|
169
|
+
conn.sudo("apt-get update", env=ENV_LANG_C)
|
|
170
|
+
print("[OK] APT package index updated")
|
|
171
|
+
# endregion
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
# Docker 包列表 (不含版本)
|
|
175
|
+
DOCKER_PACKAGES = [
|
|
176
|
+
"docker-ce",
|
|
177
|
+
"docker-ce-cli",
|
|
178
|
+
"docker-ce-rootless-extras",
|
|
179
|
+
"containerd.io",
|
|
180
|
+
"docker-buildx-plugin",
|
|
181
|
+
]
|
|
182
|
+
|
|
183
|
+
@task
|
|
184
|
+
def install_docker(conn: Connection, version: str | None = None) -> None:
|
|
185
|
+
"""安装 Docker CE 及相关组件
|
|
186
|
+
|
|
187
|
+
安装以下包: docker-ce, docker-ce-cli, docker-ce-rootless-extras,
|
|
188
|
+
containerd.io, docker-buildx-plugin
|
|
189
|
+
|
|
190
|
+
Args:
|
|
191
|
+
conn: Fabric 连接对象
|
|
192
|
+
version: Docker 版本号 (可选),为空时安装最新版
|
|
193
|
+
"""
|
|
194
|
+
packages = _build_docker_packages(version)
|
|
195
|
+
packages_str = " ".join(packages)
|
|
196
|
+
conn.sudo(f"apt-get install -y {packages_str}", env=ENV_LANG_C)
|
|
197
|
+
print(f"[OK] Docker packages installed: {packages_str}")
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
@task
|
|
201
|
+
def install_docker_compose(conn: Connection) -> None:
|
|
202
|
+
"""安装 Docker Compose 插件
|
|
203
|
+
|
|
204
|
+
安装 docker-compose-plugin 包以支持 docker compose 命令
|
|
205
|
+
|
|
206
|
+
Args:
|
|
207
|
+
conn: Fabric 连接对象
|
|
208
|
+
"""
|
|
209
|
+
conn.sudo("apt-get install -y docker-compose-plugin", env=ENV_LANG_C)
|
|
210
|
+
print("[OK] Docker Compose plugin installed")
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
@task
|
|
215
|
+
def configure_daemon(conn: Connection, template: str = "daemon_multi_mirrors.json") -> None:
|
|
216
|
+
"""配置 Docker daemon
|
|
217
|
+
|
|
218
|
+
1. 确保 /etc/docker 目录存在且权限为 0755
|
|
219
|
+
2. 从模板文件读取配置并写入 daemon.json
|
|
220
|
+
|
|
221
|
+
Args:
|
|
222
|
+
conn: Fabric 连接对象
|
|
223
|
+
template: 模板文件名
|
|
224
|
+
"""
|
|
225
|
+
# region 创建 /etc/docker 目录
|
|
226
|
+
conn.sudo("install -m 0755 -d /etc/docker", env=ENV_LANG_C)
|
|
227
|
+
# endregion
|
|
228
|
+
|
|
229
|
+
# region 读取模板并写入 daemon.json
|
|
230
|
+
template_path = DAEMON_TEMPLATES_DIR / template
|
|
231
|
+
daemon_path = "/etc/docker/daemon.json"
|
|
232
|
+
tmp_path = "/tmp/daemon.json"
|
|
233
|
+
conn.put(str(template_path), tmp_path)
|
|
234
|
+
conn.sudo(f"mv {tmp_path} {daemon_path}", env=ENV_LANG_C)
|
|
235
|
+
print(f"[OK] Docker daemon config written to {daemon_path} (template: {template})")
|
|
236
|
+
# endregion
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
@task
|
|
240
|
+
def start_docker(conn: Connection) -> None:
|
|
241
|
+
"""启动 Docker 服务
|
|
242
|
+
"""
|
|
243
|
+
conn.sudo("systemctl start docker", env=ENV_LANG_C)
|
|
244
|
+
print("[OK] Docker service started")
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
@task
|
|
248
|
+
def enable_docker(conn: Connection) -> None:
|
|
249
|
+
"""设置 Docker 服务开机自启"""
|
|
250
|
+
conn.sudo("systemctl enable docker", env=ENV_LANG_C)
|
|
251
|
+
print("[OK] Docker service enabled for auto-start")
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
@task
|
|
255
|
+
def restart_docker(conn: Connection) -> None:
|
|
256
|
+
"""重启 Docker 服务
|
|
257
|
+
"""
|
|
258
|
+
conn.sudo("systemctl restart docker", env=ENV_LANG_C)
|
|
259
|
+
print("[OK] Docker service restarted")
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
@task
|
|
263
|
+
def configure_docker_user(conn: Connection, username: str | None = None) -> None:
|
|
264
|
+
"""将用户添加到 docker 组
|
|
265
|
+
|
|
266
|
+
1. 通过 getent 获取 docker 组信息
|
|
267
|
+
2. 检查指定用户是否已在 docker 组中
|
|
268
|
+
3. 如果用户不在 docker 组中,将用户添加到 docker 组
|
|
269
|
+
4. 如果用户已在 docker 组中,跳过添加操作
|
|
270
|
+
|
|
271
|
+
Args:
|
|
272
|
+
conn: Fabric 连接对象
|
|
273
|
+
username: 用户名,默认从 hostvars 获取当前用户
|
|
274
|
+
"""
|
|
275
|
+
# region 确定目标用户名
|
|
276
|
+
if username is None:
|
|
277
|
+
username = conn.hostvars["user"]
|
|
278
|
+
# endregion
|
|
279
|
+
|
|
280
|
+
# region 获取 docker 组信息
|
|
281
|
+
result = conn.sudo("getent group docker", hide=True, warn=True, env=ENV_LANG_C)
|
|
282
|
+
if result.failed:
|
|
283
|
+
print("[WARN] Docker group does not exist, skipping user configuration")
|
|
284
|
+
return
|
|
285
|
+
# endregion
|
|
286
|
+
|
|
287
|
+
# region 检查用户是否已在 docker 组中
|
|
288
|
+
members = _parse_group_members(result.stdout)
|
|
289
|
+
if username in members:
|
|
290
|
+
print(f"[OK] User '{username}' is already in docker group, skipping")
|
|
291
|
+
return
|
|
292
|
+
# endregion
|
|
293
|
+
|
|
294
|
+
# region 添加用户到 docker 组
|
|
295
|
+
conn.sudo(f"usermod -aG docker {username}", env=ENV_LANG_C)
|
|
296
|
+
print(f"[OK] User '{username}' added to docker group")
|
|
297
|
+
# endregion
|
|
298
|
+
|
|
299
|
+
print(f"[INFO] 组变更需要重新登录才能生效,或在当前 shell 执行: newgrp docker")
|
|
300
|
+
|
|
301
|
+
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
# endregion
|
|
305
|
+
|
|
306
|
+
# region 辅助函数
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
from iamt.modules._utils.arch import normalize_arch
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
def _generate_docker_sources(
|
|
313
|
+
mirror: str,
|
|
314
|
+
distro: str,
|
|
315
|
+
codename: str,
|
|
316
|
+
arch: str = "amd64",
|
|
317
|
+
gpg_path: str = DOCKER_GPG_PATH,
|
|
318
|
+
) -> str:
|
|
319
|
+
"""生成 Docker APT 源配置字符串
|
|
320
|
+
|
|
321
|
+
Args:
|
|
322
|
+
mirror: 镜像源名称 (official/cernet/tuna/aliyun/ustc) 或完整 URL
|
|
323
|
+
distro: 发行版名称 (debian/ubuntu)
|
|
324
|
+
codename: 发行版代号 (如 bookworm, jammy)
|
|
325
|
+
arch: 架构 (默认 amd64)
|
|
326
|
+
gpg_path: GPG 密钥路径 (默认 /etc/apt/keyrings/docker.asc)
|
|
327
|
+
|
|
328
|
+
Returns:
|
|
329
|
+
符合 DEB822 格式的 APT 源配置字符串
|
|
330
|
+
"""
|
|
331
|
+
mirror_url = DOCKER_MIRRORS.get(mirror, mirror)
|
|
332
|
+
return DOCKER_SOURCES_TEMPLATE.format(
|
|
333
|
+
arch=arch,
|
|
334
|
+
gpg_path=gpg_path,
|
|
335
|
+
mirror=mirror_url,
|
|
336
|
+
distro=distro,
|
|
337
|
+
codename=codename,
|
|
338
|
+
)
|
|
339
|
+
|
|
340
|
+
|
|
341
|
+
def _build_docker_packages(version: str | None = None) -> list[str]:
|
|
342
|
+
"""构建 Docker 包名列表
|
|
343
|
+
|
|
344
|
+
Args:
|
|
345
|
+
version: Docker 版本号 (可选),为空时安装最新版
|
|
346
|
+
|
|
347
|
+
Returns:
|
|
348
|
+
包含版本后缀 (如有) 的 Docker 包名列表
|
|
349
|
+
"""
|
|
350
|
+
if version:
|
|
351
|
+
return [f"{pkg}={version}" for pkg in DOCKER_PACKAGES]
|
|
352
|
+
return DOCKER_PACKAGES.copy()
|
|
353
|
+
|
|
354
|
+
|
|
355
|
+
def _parse_group_members(getent_output: str) -> list[str]:
|
|
356
|
+
"""解析 getent group 输出,返回用户列表
|
|
357
|
+
|
|
358
|
+
Args:
|
|
359
|
+
getent_output: getent group 命令的输出 (格式: groupname:x:gid:user1,user2,...)
|
|
360
|
+
|
|
361
|
+
Returns:
|
|
362
|
+
组成员用户名列表,无成员时返回空列表
|
|
363
|
+
"""
|
|
364
|
+
parts = getent_output.strip().split(":")
|
|
365
|
+
if len(parts) < 4 or not parts[3]:
|
|
366
|
+
return []
|
|
367
|
+
return [u.strip() for u in parts[3].split(",") if u.strip()]
|
|
368
|
+
|
|
369
|
+
|
|
370
|
+
# endregion
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
from rich.console import Console
|
|
2
|
+
|
|
3
|
+
from ..docker import (
|
|
4
|
+
Connection,
|
|
5
|
+
uninstall_old_docker,
|
|
6
|
+
install_dependencies,
|
|
7
|
+
setup_gpg_key,
|
|
8
|
+
setup_docker_repo,
|
|
9
|
+
install_docker,
|
|
10
|
+
install_docker_compose,
|
|
11
|
+
configure_daemon,
|
|
12
|
+
configure_docker_user,
|
|
13
|
+
enable_docker,
|
|
14
|
+
restart_docker,
|
|
15
|
+
)
|
|
16
|
+
from ..._utils.steps import Step, run_steps
|
|
17
|
+
|
|
18
|
+
console = Console()
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def china_server_setup_docker(c: Connection):
|
|
22
|
+
"""完整安装配置 Docker CE 环境"""
|
|
23
|
+
steps: list[Step] = [
|
|
24
|
+
("卸载旧版 Docker", uninstall_old_docker),
|
|
25
|
+
("安装依赖包", install_dependencies),
|
|
26
|
+
("配置 GPG 密钥", setup_gpg_key),
|
|
27
|
+
("配置 Docker 仓库", lambda c: setup_docker_repo(c, mirror="aliyun")),
|
|
28
|
+
("安装 Docker CE", install_docker),
|
|
29
|
+
("安装 Docker Compose", install_docker_compose),
|
|
30
|
+
("配置 Docker daemon", configure_daemon),
|
|
31
|
+
("配置 Docker 用户权限", configure_docker_user),
|
|
32
|
+
("设置 Docker 服务开机自启动", enable_docker),
|
|
33
|
+
("重启 Docker 服务", restart_docker),
|
|
34
|
+
]
|
|
35
|
+
run_steps(c, steps)
|
|
36
|
+
console.print("[bold green]✓ Docker 安装配置完成[/bold green]")
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def other_server_setup_docker(c: Connection):
|
|
41
|
+
"""完整安装配置 Docker CE 环境"""
|
|
42
|
+
steps: list[Step] = [
|
|
43
|
+
("卸载旧版 Docker", uninstall_old_docker),
|
|
44
|
+
("安装依赖包", install_dependencies),
|
|
45
|
+
("配置 GPG 密钥", setup_gpg_key),
|
|
46
|
+
("配置 Docker 仓库", setup_docker_repo),
|
|
47
|
+
("安装 Docker CE", install_docker),
|
|
48
|
+
("安装 Docker Compose", install_docker_compose),
|
|
49
|
+
("配置 Docker 用户权限", configure_docker_user),
|
|
50
|
+
("设置 Docker 服务开机自启动", enable_docker),
|
|
51
|
+
("重启 Docker 服务", restart_docker),
|
|
52
|
+
]
|
|
53
|
+
run_steps(c, steps)
|
|
54
|
+
console.print("[bold green]✓ Docker 安装配置完成[/bold green]")
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"registry-mirrors": [
|
|
3
|
+
"https://docker.1panel.live",
|
|
4
|
+
"https://docker.1ms.run",
|
|
5
|
+
"https://docker.m.daocloud.io",
|
|
6
|
+
"https://docker.ketches.cn",
|
|
7
|
+
"https://hub1.nat.tf",
|
|
8
|
+
"https://hub2.nat.tf",
|
|
9
|
+
"https://mirror.ccs.tencentyun.com",
|
|
10
|
+
"https://mirrors.aliyun.com/docker",
|
|
11
|
+
"https://docker.1panel.dev",
|
|
12
|
+
"https://hub.rat.dev",
|
|
13
|
+
"https://docker.amingg.com"
|
|
14
|
+
],
|
|
15
|
+
"log-driver": "json-file",
|
|
16
|
+
"log-opts": {
|
|
17
|
+
"max-size": "100m",
|
|
18
|
+
"max-file": "3"
|
|
19
|
+
},
|
|
20
|
+
"storage-driver": "overlay2"
|
|
21
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
2
|
+
|
|
3
|
+
mQINBFit2ioBEADhWpZ8/wvZ6hUTiXOwQHXMAlaFHcPH9hAtr4F1y2+OYdbtMuth
|
|
4
|
+
lqqwp028AqyY+PRfVMtSYMbjuQuu5byyKR01BbqYhuS3jtqQmljZ/bJvXqnmiVXh
|
|
5
|
+
38UuLa+z077PxyxQhu5BbqntTPQMfiyqEiU+BKbq2WmANUKQf+1AmZY/IruOXbnq
|
|
6
|
+
L4C1+gJ8vfmXQt99npCaxEjaNRVYfOS8QcixNzHUYnb6emjlANyEVlZzeqo7XKl7
|
|
7
|
+
UrwV5inawTSzWNvtjEjj4nJL8NsLwscpLPQUhTQ+7BbQXAwAmeHCUTQIvvWXqw0N
|
|
8
|
+
cmhh4HgeQscQHYgOJjjDVfoY5MucvglbIgCqfzAHW9jxmRL4qbMZj+b1XoePEtht
|
|
9
|
+
ku4bIQN1X5P07fNWzlgaRL5Z4POXDDZTlIQ/El58j9kp4bnWRCJW0lya+f8ocodo
|
|
10
|
+
vZZ+Doi+fy4D5ZGrL4XEcIQP/Lv5uFyf+kQtl/94VFYVJOleAv8W92KdgDkhTcTD
|
|
11
|
+
G7c0tIkVEKNUq48b3aQ64NOZQW7fVjfoKwEZdOqPE72Pa45jrZzvUFxSpdiNk2tZ
|
|
12
|
+
XYukHjlxxEgBdC/J3cMMNRE1F4NCA3ApfV1Y7/hTeOnmDuDYwr9/obA8t016Yljj
|
|
13
|
+
q5rdkywPf4JF8mXUW5eCN1vAFHxeg9ZWemhBtQmGxXnw9M+z6hWwc6ahmwARAQAB
|
|
14
|
+
tCtEb2NrZXIgUmVsZWFzZSAoQ0UgZGViKSA8ZG9ja2VyQGRvY2tlci5jb20+iQI3
|
|
15
|
+
BBMBCgAhBQJYrefAAhsvBQsJCAcDBRUKCQgLBRYCAwEAAh4BAheAAAoJEI2BgDwO
|
|
16
|
+
v82IsskP/iQZo68flDQmNvn8X5XTd6RRaUH33kXYXquT6NkHJciS7E2gTJmqvMqd
|
|
17
|
+
tI4mNYHCSEYxI5qrcYV5YqX9P6+Ko+vozo4nseUQLPH/ATQ4qL0Zok+1jkag3Lgk
|
|
18
|
+
jonyUf9bwtWxFp05HC3GMHPhhcUSexCxQLQvnFWXD2sWLKivHp2fT8QbRGeZ+d3m
|
|
19
|
+
6fqcd5Fu7pxsqm0EUDK5NL+nPIgYhN+auTrhgzhK1CShfGccM/wfRlei9Utz6p9P
|
|
20
|
+
XRKIlWnXtT4qNGZNTN0tR+NLG/6Bqd8OYBaFAUcue/w1VW6JQ2VGYZHnZu9S8LMc
|
|
21
|
+
FYBa5Ig9PxwGQOgq6RDKDbV+PqTQT5EFMeR1mrjckk4DQJjbxeMZbiNMG5kGECA8
|
|
22
|
+
g383P3elhn03WGbEEa4MNc3Z4+7c236QI3xWJfNPdUbXRaAwhy/6rTSFbzwKB0Jm
|
|
23
|
+
ebwzQfwjQY6f55MiI/RqDCyuPj3r3jyVRkK86pQKBAJwFHyqj9KaKXMZjfVnowLh
|
|
24
|
+
9svIGfNbGHpucATqREvUHuQbNnqkCx8VVhtYkhDb9fEP2xBu5VvHbR+3nfVhMut5
|
|
25
|
+
G34Ct5RS7Jt6LIfFdtcn8CaSas/l1HbiGeRgc70X/9aYx/V/CEJv0lIe8gP6uDoW
|
|
26
|
+
FPIZ7d6vH+Vro6xuWEGiuMaiznap2KhZmpkgfupyFmplh0s6knymuQINBFit2ioB
|
|
27
|
+
EADneL9S9m4vhU3blaRjVUUyJ7b/qTjcSylvCH5XUE6R2k+ckEZjfAMZPLpO+/tF
|
|
28
|
+
M2JIJMD4SifKuS3xck9KtZGCufGmcwiLQRzeHF7vJUKrLD5RTkNi23ydvWZgPjtx
|
|
29
|
+
Q+DTT1Zcn7BrQFY6FgnRoUVIxwtdw1bMY/89rsFgS5wwuMESd3Q2RYgb7EOFOpnu
|
|
30
|
+
w6da7WakWf4IhnF5nsNYGDVaIHzpiqCl+uTbf1epCjrOlIzkZ3Z3Yk5CM/TiFzPk
|
|
31
|
+
z2lLz89cpD8U+NtCsfagWWfjd2U3jDapgH+7nQnCEWpROtzaKHG6lA3pXdix5zG8
|
|
32
|
+
eRc6/0IbUSWvfjKxLLPfNeCS2pCL3IeEI5nothEEYdQH6szpLog79xB9dVnJyKJb
|
|
33
|
+
VfxXnseoYqVrRz2VVbUI5Blwm6B40E3eGVfUQWiux54DspyVMMk41Mx7QJ3iynIa
|
|
34
|
+
1N4ZAqVMAEruyXTRTxc9XW0tYhDMA/1GYvz0EmFpm8LzTHA6sFVtPm/ZlNCX6P1X
|
|
35
|
+
zJwrv7DSQKD6GGlBQUX+OeEJ8tTkkf8QTJSPUdh8P8YxDFS5EOGAvhhpMBYD42kQ
|
|
36
|
+
pqXjEC+XcycTvGI7impgv9PDY1RCC1zkBjKPa120rNhv/hkVk/YhuGoajoHyy4h7
|
|
37
|
+
ZQopdcMtpN2dgmhEegny9JCSwxfQmQ0zK0g7m6SHiKMwjwARAQABiQQ+BBgBCAAJ
|
|
38
|
+
BQJYrdoqAhsCAikJEI2BgDwOv82IwV0gBBkBCAAGBQJYrdoqAAoJEH6gqcPyc/zY
|
|
39
|
+
1WAP/2wJ+R0gE6qsce3rjaIz58PJmc8goKrir5hnElWhPgbq7cYIsW5qiFyLhkdp
|
|
40
|
+
YcMmhD9mRiPpQn6Ya2w3e3B8zfIVKipbMBnke/ytZ9M7qHmDCcjoiSmwEXN3wKYI
|
|
41
|
+
mD9VHONsl/CG1rU9Isw1jtB5g1YxuBA7M/m36XN6x2u+NtNMDB9P56yc4gfsZVES
|
|
42
|
+
KA9v+yY2/l45L8d/WUkUi0YXomn6hyBGI7JrBLq0CX37GEYP6O9rrKipfz73XfO7
|
|
43
|
+
JIGzOKZlljb/D9RX/g7nRbCn+3EtH7xnk+TK/50euEKw8SMUg147sJTcpQmv6UzZ
|
|
44
|
+
cM4JgL0HbHVCojV4C/plELwMddALOFeYQzTif6sMRPf+3DSj8frbInjChC3yOLy0
|
|
45
|
+
6br92KFom17EIj2CAcoeq7UPhi2oouYBwPxh5ytdehJkoo+sN7RIWua6P2WSmon5
|
|
46
|
+
U888cSylXC0+ADFdgLX9K2zrDVYUG1vo8CX0vzxFBaHwN6Px26fhIT1/hYUHQR1z
|
|
47
|
+
VfNDcyQmXqkOnZvvoMfz/Q0s9BhFJ/zU6AgQbIZE/hm1spsfgvtsD1frZfygXJ9f
|
|
48
|
+
irP+MSAI80xHSf91qSRZOj4Pl3ZJNbq4yYxv0b1pkMqeGdjdCYhLU+LZ4wbQmpCk
|
|
49
|
+
SVe2prlLureigXtmZfkqevRz7FrIZiu9ky8wnCAPwC7/zmS18rgP/17bOtL4/iIz
|
|
50
|
+
QhxAAoAMWVrGyJivSkjhSGx1uCojsWfsTAm11P7jsruIL61ZzMUVE2aM3Pmj5G+W
|
|
51
|
+
9AcZ58Em+1WsVnAXdUR//bMmhyr8wL/G1YO1V3JEJTRdxsSxdYa4deGBBY/Adpsw
|
|
52
|
+
24jxhOJR+lsJpqIUeb999+R8euDhRHG9eFO7DRu6weatUJ6suupoDTRWtr/4yGqe
|
|
53
|
+
dKxV3qQhNLSnaAzqW/1nA3iUB4k7kCaKZxhdhDbClf9P37qaRW467BLCVO/coL3y
|
|
54
|
+
Vm50dwdrNtKpMBh3ZpbB1uJvgi9mXtyBOMJ3v8RZeDzFiG8HdCtg9RvIt/AIFoHR
|
|
55
|
+
H3S+U79NT6i0KPzLImDfs8T7RlpyuMc4Ufs8ggyg9v3Ae6cN3eQyxcK3w0cbBwsh
|
|
56
|
+
/nQNfsA6uu+9H7NhbehBMhYnpNZyrHzCmzyXkauwRAqoCbGCNykTRwsur9gS41TQ
|
|
57
|
+
M8ssD1jFheOJf3hODnkKU+HKjvMROl1DK7zdmLdNzA1cvtZH/nCC9KPj1z8QC47S
|
|
58
|
+
xx+dTZSx4ONAhwbS/LN3PoKtn8LPjY9NP9uDWI+TWYquS2U+KHDrBDlsgozDbs/O
|
|
59
|
+
jCxcpDzNmXpWQHEtHU7649OXHP7UeNST1mCUCH5qdank0V1iejF6/CfTFU4MfcrG
|
|
60
|
+
YT90qFF93M3v01BbxP+EIY2/9tiIPbrd
|
|
61
|
+
=0YYh
|
|
62
|
+
-----END PGP PUBLIC KEY BLOCK-----
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
2
|
+
|
|
3
|
+
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
|
|
60
|
+
YT90qFF93M3v01BbxP+EIY2/9tiIPbrd
|
|
61
|
+
=0YYh
|
|
62
|
+
-----END PGP PUBLIC KEY BLOCK-----
|