{"id":18510908,"url":"https://github.com/synx-ai/single-page-https","last_synced_at":"2025-06-13T06:32:14.489Z","repository":{"id":117978753,"uuid":"310169926","full_name":"synx-ai/single-page-https","owner":"synx-ai","description":"Single HTTPS enabled page serve using Python","archived":false,"fork":false,"pushed_at":"2020-11-06T10:42:58.000Z","size":21,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-14T11:19:47.773Z","etag":null,"topics":["https","https-server","python","web"],"latest_commit_sha":null,"homepage":"","language":"HTML","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/synx-ai.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"license.md","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":"2020-11-05T02:29:57.000Z","updated_at":"2020-11-06T10:43:00.000Z","dependencies_parsed_at":null,"dependency_job_id":"cff263b6-5a74-47ee-85ae-a597bbf37f5c","html_url":"https://github.com/synx-ai/single-page-https","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/synx-ai/single-page-https","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/synx-ai%2Fsingle-page-https","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/synx-ai%2Fsingle-page-https/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/synx-ai%2Fsingle-page-https/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/synx-ai%2Fsingle-page-https/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/synx-ai","download_url":"https://codeload.github.com/synx-ai/single-page-https/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/synx-ai%2Fsingle-page-https/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259594368,"owners_count":22881643,"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":["https","https-server","python","web"],"created_at":"2024-11-06T15:25:51.190Z","updated_at":"2025-06-13T06:32:14.467Z","avatar_url":"https://github.com/synx-ai.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Single HTTPS enabled page serve using Python\n[![Build Status](https://travis-ci.com/synx-ai/single-page-https.svg?branch=master)](https://travis-ci.com/synx-ai/single-page-https) [![codecov](https://codecov.io/gh/synx-ai/single-page-https/branch/master/graph/badge.svg?token=C99FGEZOI7)](https://codecov.io/gh/synx-ai/single-page-https)\n\nThe main purpuse of this project is to provide a simplistic way with a minimal installation to serve static content for microservices reporting and content testing. **Not intended for production**.\n\n\n### Pre-requistes\n\n- Clone the contents of this repo in `/home/www` or change **WorkingDirectory** in `py-serve.service`.\n\n\n### Install let's encrypt certbot\n\nFor SSL support, install and configure certbot.\n\n```shell\nsnap install core; sudo snap refresh core\nsnap install --classic certbot\ncertbot certonly --standalone\n```\n\n\n### Install service\n\nTo daemonize the server (and add reloading support on system reboot), add the service template to **Ubuntu** services. Change according with your OS.\n\n```shell\ncp py-serve.service /lib/systemd/system/pyserve.service\nsystemctl daemon-reload\nservice pyserve stop\nservice pyserve start\n```\n\nChange default certfile and keyfile paths on `server.py` or specify them as parameters.\n\nInstall hooks to reload server on cert updates:\n\n```shell\nsh -c 'printf \"#!/bin/sh\\nservice pyserve stop\\n\" \u003e /etc/letsencrypt/renewal-hooks/pre/pyserve.sh'\nsh -c 'printf \"#!/bin/sh\\nservice pyserve start\\n\" \u003e /etc/letsencrypt/renewal-hooks/post/pyserve.sh'\nchmod 755 /etc/letsencrypt/renewal-hooks/pre/pyserve.sh\nchmod 755 /etc/letsencrypt/renewal-hooks/post/pyserve.sh\n```\n\n\n### Usage\n\n```\nusage: server.py [-h] [-p PORT] [-a ADDRESS] [-c CERTFILE] [-k KEYFILE]\n\noptional arguments:\n  -h, --help            show this help message and exit\n  -p PORT, --port PORT  Server port for listening requests\n  -a ADDRESS, --address ADDRESS\n                        Server address\n  -c CERTFILE, --certfile CERTFILE\n                        SSL certificate\n  -k KEYFILE, --keyfile KEYFILE\n                        SSL Keyfile\n```\n\n\n### Logs\n\nUse system logs to review status and logs.\n\nFor status:\n```shell\nsystemctl -l status pyserve\n```\n\nFor logs:\n```shell\njournalctl -u pyserve.service -e\n```\n\n\n### Author\n\nCarlos Rivera ([@carlos_gif](https://twitter.com/carlos_gif))\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsynx-ai%2Fsingle-page-https","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsynx-ai%2Fsingle-page-https","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsynx-ai%2Fsingle-page-https/lists"}