{"id":20476867,"url":"https://github.com/askmike/new-webserver","last_synced_at":"2025-06-29T10:32:54.642Z","repository":{"id":143341173,"uuid":"122803942","full_name":"askmike/new-webserver","owner":"askmike","description":"scripts to quickly setup a webserver","archived":false,"fork":false,"pushed_at":"2025-02-24T05:08:30.000Z","size":32,"stargazers_count":16,"open_issues_count":1,"forks_count":9,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-05T14:48:03.861Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"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/askmike.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,"zenodo":null}},"created_at":"2018-02-25T04:08:26.000Z","updated_at":"2025-02-24T05:08:33.000Z","dependencies_parsed_at":"2025-06-29T10:31:14.561Z","dependency_job_id":null,"html_url":"https://github.com/askmike/new-webserver","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/askmike/new-webserver","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/askmike%2Fnew-webserver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/askmike%2Fnew-webserver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/askmike%2Fnew-webserver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/askmike%2Fnew-webserver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/askmike","download_url":"https://codeload.github.com/askmike/new-webserver/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/askmike%2Fnew-webserver/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262577953,"owners_count":23331526,"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-15T15:24:12.485Z","updated_at":"2025-06-29T10:32:54.608Z","avatar_url":"https://github.com/askmike.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# New webserver\n\nScripts and config files to quickly start a new webserver that has:\n\n- ufw\n- letsenscrypt ssl cert\n- Diffie-Hellman parameters\n- nginx with ssl properly configured\n- docker\n- postgres via docker\n\nAssumes you are logged in as root.\n\n# nodejs\n\n    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash\n    export NVM_DIR=\"$HOME/.nvm\"\n    [ -s \"$NVM_DIR/nvm.sh\" ] \u0026\u0026 \\. \"$NVM_DIR/nvm.sh\"  # This loads nvm\n    [ -s \"$NVM_DIR/bash_completion\" ] \u0026\u0026 \\. \"$NVM_DIR/bash_completion\"  # This loads nvm bash_completion\n    nvm install 22.9.0\n\n# UFW\n\n    ufw default deny incoming\n    ufw default allow outgoing\n    ufw allow 22  # ssh\n    ufw allow 443 # https\n    ufw allow 80  # http\n    # allow port from specific IP\n    # ufw allow from 1.1.1.1 to any port 22\n    # allow port from specific interface\n    # ufw allow in on eth0 to any port 80\n    ufw enable\n\n# Nginx\n\n    apt-get install nginx # todo: nginx official repo\n    openssl dhparam -out /etc/nginx/dhparam.pem 2048 # Diffie-Hellman parameters\n    cd /etc/nginx/conf.d\n    wget https://raw.githubusercontent.com/askmike/new-webserver/master/site.conf\n    # edit nginx conf with your site and api\n    service nginx configtest\n    service nginx restart\n\n# Nginx /w certbot\n\n    sudo apt-get update\n    sudo apt-get install -y nginx certbot python3-certbot-nginx\n    sudo openssl dhparam -out /etc/nginx/dhparam.pem 2048 # Diffie-Hellman parameters\n    cd /etc/nginx/conf.d\n    sudo wget https://raw.githubusercontent.com/askmike/new-webserver/master/csite.conf\n    # edit nginx conf with your domain\n    sudo service nginx configtest\n    sudo service nginx restart\n    sudo certbot --nginx -d domain\n    [email]\n    y\n    n\n    wget https://raw.githubusercontent.com/askmike/new-webserver/master/csite2.conf\n    sudo rm csite.conf\n    sudo mv csite2.conf site.conf\n    # edit nginx conf with your site and api\n    sudo service nginx configtest\n    sudo service nginx restart\n    sudo crontab -e\n    # add txt:\n    0 12 * * * /usr/bin/certbot renew --quiet\n\n# Build tools\n\n    apt-get install python python3 make build-essential\n\n# docker\n\n    apt-get update\n    apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common\n    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -\n    # apt-key fingerprint 0EBFCD88\n    add-apt-repository    \"deb [arch=amd64] https://download.docker.com/linux/ubuntu \\\n       $(lsb_release -cs) \\\n       stable\"\n    apt-get update\n    apt-get install docker-ce docker-ce-cli containerd.io\n\n## docker postgres\n\n    cd ~\n    mkdir postgresdata\n    docker run --rm   --name pg-docker -e POSTGRES_PASSWORD=YOUR-PW -d -p 5432:5432 -v $HOME/postgresdata:/var/lib/postgresql/data  postgres\n    docker ps\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faskmike%2Fnew-webserver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faskmike%2Fnew-webserver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faskmike%2Fnew-webserver/lists"}