{"id":28430627,"url":"https://github.com/biggleszx/sysprep.sh","last_synced_at":"2026-06-29T11:31:27.756Z","repository":{"id":136721448,"uuid":"48625787","full_name":"BigglesZX/sysprep.sh","owner":"BigglesZX","description":"Run initial server setup actions for new Digital Ocean droplets","archived":false,"fork":false,"pushed_at":"2025-06-23T11:08:52.000Z","size":47,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-04T10:50:35.630Z","etag":null,"topics":["bash","sysadmin","ubuntu","vps"],"latest_commit_sha":null,"homepage":null,"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/BigglesZX.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}},"created_at":"2015-12-26T22:47:09.000Z","updated_at":"2025-06-23T11:08:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"861741fe-d14d-4cf1-af46-d5cc6eea6422","html_url":"https://github.com/BigglesZX/sysprep.sh","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/BigglesZX/sysprep.sh","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BigglesZX%2Fsysprep.sh","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BigglesZX%2Fsysprep.sh/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BigglesZX%2Fsysprep.sh/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BigglesZX%2Fsysprep.sh/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BigglesZX","download_url":"https://codeload.github.com/BigglesZX/sysprep.sh/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BigglesZX%2Fsysprep.sh/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34925718,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-29T02:00:05.398Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["bash","sysadmin","ubuntu","vps"],"created_at":"2025-06-05T14:07:36.838Z","updated_at":"2026-06-29T11:31:27.751Z","avatar_url":"https://github.com/BigglesZX.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# sysprep.sh\n\nQuick script for running initial actions on new Digital Ocean droplets. Salt states are great, but this is very, very simple.\n\nRuns through the following setup steps:\n\n* Updating installed packages\n* Timezone selection\n* Root user configuration\n* Standard user creation\n* Python/`virtualenv` installation\n* Swap file configuration (this is [officially discouraged](https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-20-04) but included here for... legacy reasons?)\n* `iptables` configuration\n* Common `apt` package installation\n* MySQL configuration\n* Pillow (Python image library) dependency installation\n\nDesigned for Ubuntu 20.04 on a 1GB RAM instance, but fairly portable. You can find a legacy version for Ubuntu 18.04 on the `ubuntu18` branch.\n\n## Usage\n\nPiping the contents of third-party URLs to `bash` is, on the whole, extremely risky behaviour. It's also quite convenient. Please inspect the contents of the script to satisfy yourself that it's benign before attempting to run it. You can make BIG TROUBLE for yourself otherwise! If you're in any doubt, don't proceed. I'm just a guy on the Internet! For some extra peace of mind you may wish to download the script first, using `wget` or `curl`, before running it.\n\n```\n# bash \u003c(curl -o - https://raw.githubusercontent.com/biggleszx/sysprep.sh/main/sysprep.sh)\n```\n\nIf you want to use the legacy version (which is no longer maintained) for Ubuntu 18.04, it's this:\n\n```\n# bash \u003c(curl -o - https://raw.githubusercontent.com/BigglesZX/sysprep.sh/ubuntu18/sysprep.sh)\n```\n\n## nginx SSL configuration\n\nAs of June 2022 the script generates a self-signed SSL certificate (prompting for the necessary details) and modifies the nginx configuration for the `default` virtual host to accept HTTPS requests, since without this any HTTPS request will be passed to the first virtual host that includes an SSL `server` block in its configuration. This change introduces some [snippets](https://github.com/BigglesZX/sysprep.sh/tree/main/snippets) that are copied from the repository to the server via `curl`. Per the warning above, you should inspect the contents of these snippets before running the script and ensure you're happy with the contents. The snippets and cert generation commands were sourced from a DigitalOcean [tutorial](https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-nginx-in-ubuntu-18-04) on the subject.\n\n## SSH root access\n\nWhen the script completes and your standard user is set up, you'll probably want to remove root's ability to log in over SSH.\n\nOpen the file `/etc/ssh/sshd_config` and locate the line:\n\n```\nPermitRootLogin yes\n```\n\nChange it to:\n\n```\nPermitRootLogin no\n```\n\nRestart the `ssh` service (be warned: this will probably disconnect you if you're currently connected via SSH):\n\n```shell\n# service ssh restart\n```\n\n## License\n\n```\nThe MIT License (MIT)\n\nCopyright (c) 2022 James Tiplady\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```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbiggleszx%2Fsysprep.sh","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbiggleszx%2Fsysprep.sh","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbiggleszx%2Fsysprep.sh/lists"}