{"id":13558566,"url":"https://github.com/serverfarmer/serverfarmer","last_synced_at":"2025-04-09T20:09:08.451Z","repository":{"id":29062699,"uuid":"32590555","full_name":"serverfarmer/serverfarmer","owner":"serverfarmer","description":"Manage multiple servers with different operating systems, configurations, requirements etc. for many separate customers in an outsourcing model.","archived":false,"fork":false,"pushed_at":"2024-01-20T18:50:54.000Z","size":632,"stargazers_count":187,"open_issues_count":0,"forks_count":90,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-04-09T20:09:04.582Z","etag":null,"topics":["ansible","centos","chef","debian","devops","devops-tools","freebsd","management-system","netbsd","opensuse","oracle-linux","proxmox","puppet","redhat","rhel","server","server-management","server-monitoring","ubuntu","zentyal"],"latest_commit_sha":null,"homepage":"http://serverfarmer.org/","language":"Shell","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/serverfarmer.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-03-20T15:09:46.000Z","updated_at":"2025-03-17T06:22:22.000Z","dependencies_parsed_at":"2024-09-16T01:03:45.991Z","dependency_job_id":"12c6a3fc-af93-4dae-a1e1-8d5b11e8d6ba","html_url":"https://github.com/serverfarmer/serverfarmer","commit_stats":{"total_commits":334,"total_committers":1,"mean_commits":334.0,"dds":0.0,"last_synced_commit":"0b920c5d687d651f50cac2ac23a28d5a5fe5be37"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serverfarmer%2Fserverfarmer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serverfarmer%2Fserverfarmer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serverfarmer%2Fserverfarmer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serverfarmer%2Fserverfarmer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/serverfarmer","download_url":"https://codeload.github.com/serverfarmer/serverfarmer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248103872,"owners_count":21048245,"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":["ansible","centos","chef","debian","devops","devops-tools","freebsd","management-system","netbsd","opensuse","oracle-linux","proxmox","puppet","redhat","rhel","server","server-management","server-monitoring","ubuntu","zentyal"],"created_at":"2024-08-01T12:05:01.892Z","updated_at":"2025-04-09T20:09:08.416Z","avatar_url":"https://github.com/serverfarmer.png","language":"Shell","readme":"[![Build Status](https://travis-ci.org/serverfarmer/serverfarmer.png?branch=master)](https://travis-ci.org/serverfarmer/serverfarmer)\n\nServer Farmer is a lightweight server management framework, designed for companies, that **manage many servers for different customers**, where:\n\n- each customer has separate employees, permissions, compliance requirements, end users etc.\n- typical customer has between 1 and 15-20 servers\n- each server has different purpose, users and set of services\n- many servers are \"snowflakes\" (that still need to be automatically managed, where possible)\n- connecting them to a single Ansible or Puppet instances would be either completely impossible, or way too expensive\n- maintaining separare Ansible or Puppet instances for each customer would be too expensive for most customers\n\nIt is useful mainly for:\n\n- IT outsourcing companies\n- software houses and similar companies that manage particular servers as part of bigger project\n\nAs of 2022, Server Farmer has over 14 years of history of managing production servers, including over 7 years of being successful open source project.\n\nIt was used just by its author to manage the infrastructure:\n\n- for over 250 customers\n- consisted of almost 2000 physical/virtual servers and containers\n- located in over 30 countries (including cloud instances in all major public cloud providers)\n\n## Documentation\n\nYou can find a lot more information at http://serverfarmer.org/ project page and in extension repositories:\n\n##### less technical\n\n1. [Home page](http://serverfarmer.org/)\n2. [Business overview (for non-technical users)](http://serverfarmer.org/basics.html)\n3. [Project history](http://serverfarmer.org/history.html)\n\n##### for the beginners\n\n1. [Getting started](http://serverfarmer.org/getting-started.html)\n2. [Configuration settings](http://serverfarmer.org/configuration.html)\n3. [gpg/ssh key configuration details](https://github.com/serverfarmer/sf-keys)\n4. [List of extensions](http://serverfarmer.org/extensions.html)\n\n##### more advanced\n\n1. [Farm management](https://github.com/serverfarmer/sm-farm-manager)\n2. [Backup architecture (local part)](https://github.com/serverfarmer/sf-backup)\n3. [Backup architecture (storage part)](https://github.com/serverfarmer/sm-backup-collector)\n4. [Monitoring features](http://serverfarmer.org/monitoring.html)\n5. [Heartbeat subproject (client)](https://github.com/serverfarmer/heartbeat-linux)\n6. [Heartbeat subproject (server)](https://github.com/serverfarmer/heartbeat-server)\n\n##### DNS / DHCP management\n\n1. [Zone Manager tool](https://github.com/zonemanager/zonemanager)\n\nIf you have any technical or non-technical questions about Server Farmer, for\nwhich you can't find an answer on the project home page, feel free to write\nto support@serverfarmer.org. We will try either to respond you directly, or\npublish an answer on the page, or directly fix any reported issues.\n\n## Advantages of Server Farmer over managing individual servers\n\nNo matter if you manage just a single server, or hundreds of them, installing\nServer Farmer gives you many advantages over default OS configuration:\n\n- consistent and reliable tools to manage many servers at once (or one by one)\n- improved server security in various areas\n- several monitoring and alerting capabilities\n- automatic, possibly encrypted backups\n- working MTA configuration (your servers are now able to send emails)\n- central logging configuration (all logs are stored and processed in one place, enhancing security of your infrastructure)\n- hardened network stack, immune from participation in DDoS attacks\n\n## Differences between Server Farmer and competitive tools\n\nThe main difference between Server Farmer and the competitive tools (mostly\nPuppet, Chef, Ansible, Salt and CFEngine) is that **Server Farmer is designed\nto manage a completely heterogeneous environment**, where servers:\n\n- are owned by many different companies\n- have different operating systems\n- have different configurations\n- have different installed services and applications\n- have different system users, groups and permissions\n- have different roles and purposes\n\nTo achieve that, Server Farmer is mainly focused on low-level server security\naspects, and doesn't try to cover the application level at all. As opposite,\nmost mentioned tools mentioned tools focus mainly on the application level,\nproviding more-or-less complete \"Infrastructure As Code\" frameworks.\n\n## Advantages of Server Farmer over competitive tools\n\nMost server management tools (Puppet, Chef etc.) are designed with corporate\nmindset (\"where the money is\"), and follow \"one managed application/customer - one\ninstance\" model, which is suitable mainly for big companies, with lots of servers\nand big applications. Such model is however obviously too expensive for companies\nthat have 1-5 servers overall.\n\nAs opposite to that model, Server Farmer is built from ground up to manage many\ncustomers, applications etc. using only one instance shared across all customers,\nwhich is much cheaper, in both technical resources (servers, repositories etc.),\nand man-hours.\n\nServer Farmer basic configuration can be set up just in a few minutes and then\nextended, when your server farm is growing. You can also implement your own\nfunctional extensions (just like Ansible playbooks or Chef recipes, but much\nmore simple), that will cover completely new functionalities - or you can use\nServer Farmer with Ansible, whichever better fits your needs.\n\n## How to install Server Farmer on your first server\n\nServer Farmer consists of over 80 Git repositories. But don't worry, you will\nneed to fork only 2 of them (this one and `sf-keys`), and start with editing\nsmall files in `config` directory.\n\nAfter forking, clone this repository to `/opt/farm` directory on your server:\n\n```\ngit clone https://github.com/your-github-login/serverfarmer /opt/farm\n```\n\nThen run `setup.sh` script and just follow the simple on-screen instructions:\n\n```\n/opt/farm/setup.sh\n```\n\n## Integration with cloud\n\nServer Farmer uses [Polynimbus](https://github.com/polynimbus/polynimbus)\nmulti-cloud infrastructure management tool to launch and manage cloud instances,\nand `sm-farm-provisioning` extension to provision them.\n\nIt supports:\n\n- Alibaba Cloud\n- Amazon Web Services\n- Beyond e24cloud.com\n- Google Cloud Platform\n- Hetzner Cloud (and also Hetzner \"classic\" dedicated servers)\n- Microsoft Azure\n- Rackspace Cloud\n- any cloud service based on OpenStack (including public, private and hybrid clouds)\n\n### How to deploy Server Farmer into cloud\n\nInitial setup:\n\n- choose a server for the *farm manager* role (no special requirements, except that all management extensions are tested mainly on Ubuntu 14.04 LTS, 16.04 LTS and 18.04 LTS)\n- install Server Farmer on it ([basic installation](http://serverfarmer.org/getting-started.html) is enough)\n- install Polynimbus on it and configure it, providing your cloud API keys and other details (interactively):\n\n```\ngit clone https://github.com/polynimbus/polynimbus /opt/polynimbus\n/opt/polynimbus/install.sh\n/opt/polynimbus/api/v1/account/setup.sh aws myaccount\n```\n\nLaunch new cloud instance:\n\n```\n/opt/polynimbus/api/v1/instance/launch.sh aws myaccount test_key1 m5.xlarge\n```\n\nInstall Server Farmer on new instance:\n\n```\nsf-provision ec2-54-123-45-67.compute-1.amazonaws.com /etc/polynimbus/ssh/id_aws_test_key1 test_profile\n```\n\nList cloud instances:\n\n```\n/opt/polynimbus/api/v1/instance/list.sh aws myaccount\n```\n\n## Compatible operating systems\n\nThe below list contains only distribution versions with 100% compatibility. If\nyour OS is not on this list, but is any Debian/RHEL derivative, Server Farmer\nwill most probably support it at least partially.\n\n- Debian:\n  - Debian 4.x (Etch)\n  - Debian 5.x (Lenny)\n  - Debian 6.x (Squeeze)\n  - Debian 7.x (Wheezy)\n  - Debian 8.x (Jessie)\n  - Debian 9.x (Stretch)\n  - Debian 10.x (Buster)\n  - Debian 11.x (Bullseye)\n\n- Ubuntu:\n  - Ubuntu 8.04 LTS (Hardy Heron)\n  - Ubuntu 9.04 (Jaunty Jackalope)\n  - Ubuntu 10.04 LTS (Lucid Lynx)\n  - Ubuntu 10.10 (Maverick Meerkat)\n  - Ubuntu 12.04 LTS (Precise Pangolin)\n  - Ubuntu 13.10 (Saucy Salamander)\n  - Ubuntu 14.04 LTS (Trusty Tahr)\n  - Ubuntu 15.04 (Vivid Vervet)\n  - Ubuntu 16.04 LTS (Xenial Xerus)\n  - Ubuntu 18.04 LTS (Bionic Beaver)\n  - Ubuntu 20.04 LTS (Focal Fossa)\n  - Ubuntu 22.04 LTS (Jammy Jellyfish)\n\n- Debian/Ubuntu clones:\n  - Devuan Jessie (based on Debian 8.x)\n  - Devuan ASCII (based on Debian 9.x)\n  - DirectAdmin installed on Debian 8.x (Jessie)\n  - Linux Mint 17.x (based on Ubuntu 14.04 LTS)\n  - openATTIC 1.2 (based on Debian 7.x)\n  - Proxmox VE 2.x (based on Debian 6.x)\n  - Proxmox VE 3.x (based on Debian 7.x)\n  - Zentyal Server 3.4 (based on Ubuntu 13.10)\n  - Zentyal Server 4.1 (based on Ubuntu 14.04 LTS)\n  - Zentyal Server 5.0 (based on Ubuntu 16.04 LTS)\n\n- RHEL and direct clones:\n  - Red Hat Enterprise Linux 5.x\n  - Red Hat Enterprise Linux 6.x\n  - Red Hat Enterprise Linux 7.x\n  - Red Hat Enterprise Linux 8.x\n  - CentOS 5.x\n  - CentOS 6.x\n  - CentOS 7.x\n  - Oracle Linux 6.x - tested with Oracle Database 10g2, 11g, 11g2, 12c\n  - Oracle Linux 7.x - tested with Oracle Database 11g2, 12c\n\n- specialized RHEL clones:\n  - cPanel / WHM 11.x (based on CentOS 6.4-6.6)\n  - Elastix 2.5 (based on CentOS 5.x)\n  - Elastix 4.0 (based on CentOS 7.x)\n  - Elastix MT 3.0 (based on CentOS 6.x)\n\n- hardware appliances:\n  - Raspbian 8.x (Jessie) on Raspberry Pi\n  - Debian all versions listed above since 6.x (Squeeze) on QNAP with ARM CPU\n  - QNAP QTS 4.x (limited compatilibty, without central management)\n\n- other systems:\n  - FreeBSD 9.x\n  - FreeBSD 10.x\n  - NetBSD 6.x\n  - openSUSE 13.x\n\n## How to contribute\n\nWe are welcome to contributions of any kind: bug fixes, added code comments,\nsupport for new operating system versions or hardware etc.\n\nIf you want to contribute:\n- fork this repository and clone it to your machine\n- create a feature branch and do the change inside it\n- push your feature branch to github and create a pull request\n\n## License\n\n|                      |                                          |\n|:---------------------|:-----------------------------------------|\n| **Author:**          | Tomasz Klim (\u003copensource@tomaszklim.pl\u003e) |\n| **Copyright:**       | Copyright 2008-2022 Tomasz Klim          |\n| **License:**         | MIT                                      |\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","funding_links":[],"categories":["Shell","ansible","ubuntu","devops"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fserverfarmer%2Fserverfarmer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fserverfarmer%2Fserverfarmer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fserverfarmer%2Fserverfarmer/lists"}