{"id":18238231,"url":"https://github.com/thealpha16/phoros","last_synced_at":"2026-04-29T15:05:45.740Z","repository":{"id":257907391,"uuid":"872016829","full_name":"TheAlpha16/phoros","owner":"TheAlpha16","description":"A lightweight go server to host files in k8s environment","archived":false,"fork":false,"pushed_at":"2025-03-06T18:15:48.000Z","size":61,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-06T17:05:58.538Z","etag":null,"topics":["file-server","go-api","kubernetes","s3-compatible"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TheAlpha16.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":"2024-10-13T15:14:46.000Z","updated_at":"2025-03-06T18:15:52.000Z","dependencies_parsed_at":"2024-12-22T05:41:03.198Z","dependency_job_id":"08768141-d7ce-445a-800c-37a245ed9176","html_url":"https://github.com/TheAlpha16/phoros","commit_stats":null,"previous_names":["thealpha16/phoros"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/TheAlpha16/phoros","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheAlpha16%2Fphoros","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheAlpha16%2Fphoros/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheAlpha16%2Fphoros/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheAlpha16%2Fphoros/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TheAlpha16","download_url":"https://codeload.github.com/TheAlpha16/phoros/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheAlpha16%2Fphoros/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32430820,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T13:34:34.882Z","status":"ssl_error","status_checked_at":"2026-04-29T13:34:29.830Z","response_time":110,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["file-server","go-api","kubernetes","s3-compatible"],"created_at":"2024-11-05T03:04:29.289Z","updated_at":"2026-04-29T15:05:45.704Z","avatar_url":"https://github.com/TheAlpha16.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# phoros\n\nphoros is a Kubernetes-native, lightweight file server written in Go. It is designed to be scalable and efficient, capable of serving files with redundancy and persistent storage. Initially developed for use in CTF environments, phoros can be easily decoupled and used as a standalone solution. It integrates with Kubernetes and supports both native file storage and S3-compatible object storage (S3 support coming in the next release).\n\n## Features\n\n- **Lightweight \u0026 Efficient:** Optimized for minimal resource usage while handling file storage and transfer.\n- **Kubernetes-Native:** Built specifically for Kubernetes environments, with easy deployment and configuration.\n- **Helm Charts:** For easy configuration and deployment.\n- **Scalable:** Supports autoscaling based on CPU/memory utilization.\n- **Storage Options:** Native or S3-compatible object storage.\n- **Traefik Proxy Integration:** Traefik proxy support for TLS certificates and external access through Kubernetes Ingress.\n\n## Architecture\n\nphoros is designed to run within a Kubernetes cluster. By default, it exposes a file server at a container port `9049` and can be configured to use a Kubernetes service to expose the server internally or externally. For external access, phoros leverages a Traefik proxy for TLS termination and ingress management.\n\n## Getting Started\n\n### Prerequisites\n\n- Kubernetes Cluster\n- Helm (for deployment)\n- (Optional) S3-compatible object store (future release)\n\n### Installation\n\n1. Clone the repository:\n   ```bash\n   git clone https://github.com/TheAlpha16/phoros.git\n   cd phoros\n   ```\n\n2. Customize the configuration by modifying the `values.yaml` file or by passing parameters during          installation\n\n3. Install phoros using Helm:\n   ```bash\n   helm install phoros ./helm\n   ```\n\n4. Access phoros:\n   - If ingress is enabled and properly configured, access phoros using the defined host (e.g., `https://example.com/files`).\n   - If ingress is disabled, use the internal Kubernetes service (default type: `ClusterIP`).\n\n## Usage\n\n### Storage Configuration\n\nYou can choose between native file storage and S3-compatible object storage by setting the `objectStore` variable in the Helm `values.yaml` file.\n\n- **Native Storage**:\n  ```yaml\n  storage:\n    objectStore: native\n  ```\n\n- **S3-Compatible Storage** (available in future releases):\n  ```yaml\n  storage:\n    objectStore: s3\n  ```\n\n## Configuration\n\nphoros uses a `values.yaml` file for configuration. Below is a summary of the key configurable options:\n\n- **Namespace**: Specify the Kubernetes namespace where phoros will be installed.\n- **Event Timings**: Configure event start and end times if running phoros in a timed environment (e.g., CTFs).\n- **Storage**: Define the storage class, access mode, and size. Choose between `native` or `s3` for the object store.\n- **Secrets**: Set secrets for session management and admin access.\n- **Service Type**: Specify the Kubernetes service type (`ClusterIP`, `NodePort`, or `LoadBalancer`).\n- **Ingress**: Enable or disable ingress and define the host and paths.\n- **Autoscaling**: Configure autoscaling parameters based on CPU/memory utilization.\n\nFor detailed configuration, check the [Helm `values.yaml`](./helm/phoros/values.yaml) file.\n\n### Example `values.yaml`\n\n```yaml\nreplicaCount: 1\nnamespace: phoros\n\nevent:\n  startTime: 1729191091\n  endTime: 1729291091\n  postEvent: false\n\nstorage:\n  storageClass: do-block-storage\n  accessMode: ReadWriteOnce\n  size: 1Gi\n  objectStore: native\n  mountPath: /etc/phoros\n\nsecrets:\n  sessionSecret: your-session-secret\n  adminSecret: your-admin-secret\n\nservice:\n  type: LoadBalancer\n  containerPort: 9049\n  servicePort: 80\n\ningress:\n  enabled: true\n  host: \"example.com\"\n  paths:\n    - /files\n    - /ping\n\nautoscaling:\n  enabled: false\n  minReplicas: 1\n  maxReplicas: 10\n  targetCPUUtilizationPercentage: 80\n```\n\n## Contributing\n\nFeel free to contribute to phoros by opening issues or submitting pull requests.\n\n## Roadmap\n\n- Add S3-compatible object storage support.\n- Add tls support\n\n## License\n\nThis project is licensed under the GNU General Public License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthealpha16%2Fphoros","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthealpha16%2Fphoros","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthealpha16%2Fphoros/lists"}