{"id":21250810,"url":"https://github.com/rss3-network/mastodon-instance-kit","last_synced_at":"2025-07-11T01:31:30.444Z","repository":{"id":249024772,"uuid":"829866516","full_name":"RSS3-Network/Mastodon-Instance-Kit","owner":"RSS3-Network","description":null,"archived":true,"fork":false,"pushed_at":"2024-10-21T05:37:50.000Z","size":118,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-11-24T20:47:04.162Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RSS3-Network.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":{"github":["rss3-network"]}},"created_at":"2024-07-17T06:42:08.000Z","updated_at":"2024-11-21T18:41:20.000Z","dependencies_parsed_at":"2024-10-19T12:14:00.833Z","dependency_job_id":null,"html_url":"https://github.com/RSS3-Network/Mastodon-Instance-Kit","commit_stats":null,"previous_names":["rss3-network/mastodon-plugin","rss3-network/mastodon-instance-kit"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/RSS3-Network/Mastodon-Instance-Kit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RSS3-Network%2FMastodon-Instance-Kit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RSS3-Network%2FMastodon-Instance-Kit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RSS3-Network%2FMastodon-Instance-Kit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RSS3-Network%2FMastodon-Instance-Kit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RSS3-Network","download_url":"https://codeload.github.com/RSS3-Network/Mastodon-Instance-Kit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RSS3-Network%2FMastodon-Instance-Kit/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264705084,"owners_count":23652153,"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":[],"created_at":"2024-11-21T03:39:03.630Z","updated_at":"2025-07-11T01:31:30.100Z","avatar_url":"https://github.com/RSS3-Network.png","language":"Shell","funding_links":["https://github.com/sponsors/rss3-network"],"categories":[],"sub_categories":[],"readme":"# Mastodon Instance Kit for RSS3 Node Integration\n\nThis repository provides tools to help you obtain a `valid Mastodon endpoint` for node deployment with a Mastodon worker at the [RSS3 Explorer](https://explorer.rss3.io/).\n\n## Two Options to Obtain Valid Mastodon Endpoints\n\n1. **Automated Mastodon Instance Deployment**: Quick setup of a new Mastodon instance.\n2. **Manual Mastodon Instance Modification**: Modify an existing Mastodon instance.\n\n\n\n\nBoth options will guide you through the initial setup. Once completed, you'll obtain a valid Mastodon endpoint necessary for the RSS3 node deployment with a Mastodon worker at the RSS3 explorer.\n\n\n\n\n## Option 1: Automated Mastodon Instance Deployment\n\nFor users who want to quickly set up a new Mastodon instance with RSS3 node integration. It provides:\n- A straightforward setup process for a ready-to-use Mastodon instance\n- Pre-configured services, allowing your instance to receive messages from fediverse\n\nThis approach is ideal for those who want a simple solution that's operational right after deployment, with built-in connectivity to the wider Mastodon network.\n\n\n\n\n### Prerequisites\n\n- A server with a `public IP` address\n- A `domain name` pointing to your server's IP\n- Sufficient server hardware resources:\n  - At least 2 CPU cores\n  - Minimum 4GB RAM (8GB recommended)\n  - At least 50GB of storage space (80GB recommended)\n- Open ports: `80 (HTTP)`, `443 (HTTPS)`, `9092 (Kafka)`\n  \n### Deployment Steps\n1. Configure domain's DNS settings:\n\nSet up an A record for your domain (e.g., `mastodon.yourdomain.com`) pointing to your server's public IP address.\n\n\n2. Clone this repository:\n\n   ```sh\n   git clone https://github.com/RSS3-Network/Mastodon-Instance-Kit.git\n   cd Mastodon-Instance-Kit\n   ```\n\n3. Set the required environment variables:\n\n   ```sh\n   export POSTGRES_PASSWORD='your_secure_db_password'\n   export REDIS_PASSWORD='your_secure_redis_password'\n   export LETS_ENCRYPT_EMAIL='your_certificate_management_email'\n   ```\n\n4. Run the deployment script:\n\n   ```sh\n   chmod +x deploy_mastodon.sh\n   ./deploy_mastodon.sh\n   ```\n\n5. Follow the prompts to enter any required information.\n\n6. After successful deployment, you'll receive:\n   - The URL of your Mastodon instance\n   - Admin account credentials (admin username and password)\n\n7. Wait for your instance to be ready\n\n### Important Notes\n- The SSL setup process may take up to to a few minutes. Please be patient and frequently check your domain status.\n- The admin account is created automatically for your convenience, but it's crucial to change the password upon first login.\n- Review and adjust the instance settings as needed.\n- The deployment uses multiple Docker services. If you need to troubleshoot, you can check logs for specific services using:\n  ```sh\n  docker-compose logs [service_name]\n\n\n### Q\u0026A\n\n- Rate Limit Error - Let's Encrypt is refusing to issue a new certificate because you've reached the limit for this domain\n ```sh\n  rm -rf /data/caddy/certificates\n  docker-compose restart caddy\n ```\n## Option 2: Manual Mastodon Instance Modification\n\nFor users who already have a Mastodon instance and want to integrate it with RSS3 node.\n\n### 1. Mastodon Instance Configuration\n\n#### 1.1 Update docker-compose.yaml\n\nAdd the following services to your `docker-compose.yaml`:\n\n```yaml\nzookeeper:\n  image: bitnami/zookeeper:latest\n  ports:\n    - \"2181:2181\"\n  environment:\n    ZOOKEEPER_CLIENT_PORT: 2181\n    ZOOKEEPER_TICK_TIME: 2000\n    ZOO_ENABLE_AUTH: true\n\nkafka:\n  image: bitnami/kafka:latest\n  ports:\n    - \"9092:9092\"\n  env_file:\n    - .env.production\n  depends_on:\n    - zookeeper\n\nkafka_sender:\n  image: ghcr.io/rss3-network/mastodon-instance-kit:main-04b2b41a70753d3c4a1dcde70de4ddc7abf5cd79\n  restart: always\n  ports:\n    - '3001:3001'\n  depends_on:\n    - kafka\n  env_file:\n    - .env.production\n```\n\n#### 1.2 Configure Kafka\n\nAdd the following environment variables to your `.env.production` file:\n\n```sh\n# Kafka settings\nKAFKA_ADVERTISED_HOST=your_mastodon_instance_ip\nKAFKA_BROKER_ID=1\nKAFKA_TOPIC=activitypub_events\nKAFKA_ZOOKEEPER_CONNECT=zookeeper:2181\nKAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092\nKAFKA_ADVERTISED_LISTENERS=PLAINTEXT://${KAFKA_ADVERTISED_HOST}:9092\nKAFKA_BROKER=kafka:9092\n```\n\nReplace `your_mastodon_instance_ip` with your actual Mastodon instance IP.\n\n#### 1.3 Start New Services\n\nRun the following command to start the new services:\n\n```bash\ndocker-compose up kafka zookeeper kafka_sender\n```\n\n#### 1.4 Update Nginx Configuration\n\nMake sure your Proxy Server setup forwards requests from `/inbox` to the service running on `localhost` at port `3001`.\n\nAfter making these adjustments, restart Nginx to apply the changes.\n\n\n## Finished\n\nCongratulations! You now have a valid Mastodon endpoint for your RSS3 node.\n\nYour Mastodon endpoint is: `instance_external_ip:9092`\n\n\n\n### Next Steps: RSS3 Node Deployment\n\nNow that you have your Mastodon endpoint, you can proceed with the RSS3 node deployment:\n\n1. Return to the [RSS3 Explorer](https://explorer.rss3.io/).\n2. If you haven't started the node deployment process, begin it now.\n3. During the configuration step, you'll be asked to set up workers for your node.\n4. Choose to add a Mastodon worker.\n5. When prompted for a Mastodon endpoint, enter your endpoint: `your_external_ip:9092`.\n6. Complete the remaining steps as guided by the RSS3 Explorer.\n\n### Important Notes\n\n- Ensure your firewall allows incoming connections on port 9092.\n- If you encounter any issues during the RSS3 node deployment, double-check your Mastodon endpoint and review the integration steps.\n\n## Support and Further Information\n\n- For Mastodon-related questions, refer to the [official Mastodon documentation](https://docs.joinmastodon.org/).\n- For RSS3-specific inquiries, check the [RSS3 documentation](https://docs.rss3.io/).\n- If you encounter any issues with this integration, please open an issue in this repository.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frss3-network%2Fmastodon-instance-kit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frss3-network%2Fmastodon-instance-kit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frss3-network%2Fmastodon-instance-kit/lists"}