{"id":13409162,"url":"https://github.com/realaravinth/libmedium","last_synced_at":"2026-01-23T02:38:37.699Z","repository":{"id":105008691,"uuid":"423214699","full_name":"realaravinth/libmedium","owner":"realaravinth","description":"An Alternative Medium Frontend | Development continues at: https://git.batsense.net/realaravinth/libmedium","archived":false,"fork":false,"pushed_at":"2024-06-07T09:33:20.000Z","size":4950,"stargazers_count":87,"open_issues_count":13,"forks_count":9,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-13T17:48:55.125Z","etag":null,"topics":["medium","medium-com","privacy","self-hosted"],"latest_commit_sha":null,"homepage":"https://libmedium.batsense.net","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/realaravinth.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"open_collective":null,"liberapay":"realaravinth","issuehunt":null,"custom":["https://batsense.net/donate"]}},"created_at":"2021-10-31T17:27:11.000Z","updated_at":"2025-03-30T10:24:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"e8f78668-955e-443a-90e2-33d1d7162d73","html_url":"https://github.com/realaravinth/libmedium","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/realaravinth/libmedium","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/realaravinth%2Flibmedium","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/realaravinth%2Flibmedium/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/realaravinth%2Flibmedium/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/realaravinth%2Flibmedium/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/realaravinth","download_url":"https://codeload.github.com/realaravinth/libmedium/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/realaravinth%2Flibmedium/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28679137,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-23T01:00:35.747Z","status":"online","status_checked_at":"2026-01-23T02:00:08.296Z","response_time":59,"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":["medium","medium-com","privacy","self-hosted"],"created_at":"2024-07-30T20:00:58.474Z","updated_at":"2026-01-23T02:38:37.685Z","avatar_url":"https://github.com/realaravinth.png","language":"HTML","funding_links":["https://liberapay.com/realaravinth","https://batsense.net/donate"],"categories":["HTML","Overview","privacy","Alternative Frontends","Alternative Web Front-ends","List"],"sub_categories":["Medium"],"readme":"\u003cdiv align=\"center\"\u003e\n\u003ch1\u003e LibMedium \u003c/h1\u003e\n\u003cp\u003e\n\n**Privacy-focused proxy for medium.com**\n\n\u003c/p\u003e\n\n[![Awesome Humane Tech](https://raw.githubusercontent.com/humanetech-community/awesome-humane-tech/main/humane-tech-badge.svg?sanitize=true)](https://github.com/humanetech-community/awesome-humane-tech)\n[![status-badge](https://ci.batsense.net/api/badges/realaravinth/libmedium/status.svg)](https://ci.batsense.net/realaravinth/libmedium)\n[![codecov](https://codecov.io/gh/realaravinth/libmedium/branch/master/graph/badge.svg)](https://codecov.io/gh/realaravinth/libmedium)\n\n\u003c/div\u003e\n\n## Status\n\nUsable. Should you run into a `HTTP 500 Internal Server Error`, please\nfile a bug report with the URL of the post you were trying to read and\nthe git commit hash of the build. Git commit hash can be obtained from\n[/api/v1/meta/build](https://libmedium.batsense.net/api/v1/meta/build).\n\nThis proxy works by interacting with Medium's undocumented(probably\nprivate but unauthenticated) API. So I've had to make assumptions and\ntweak API schematics as I run into errors.\n\n## Features\n\n-   [x] proxy images\n-   [x] proxy GitHub gists\n-   [x] render posts\n-   [x] syntax highlighting for gists\n-   [ ] user pages(WIP)\n-   [ ] RSS feeds\n\n## Why?\n\nKnowledge is the true wealth of humanity. If it weren't for our\nancestors, who chose to pass down their knowledge and experiences, we\nwould still be a primitive species. Whatever advancement that we as\na species have achieved is because we chose to share information.\n\nTo put a paywall on knowledge like that is both obscene and goes against\nthe very nature of humanity.\n\nIt is possible to run a sustainable publication business while still\nrespecting freedom. [LWN.net](https://lwn.net) is one of my favourite\npublications that has been around forever. So it is possible. I hope\nmedium.com comes up with other, non-harmful ways to run a sustainable\nbusiness.\n\n## Instances\n\n| Instance                                                                  | Country | Provider   | Host                                   |\n| ------------------------------------------------------------------------- | ------- | ---------- | -------------------------------------- |\n| https://libmedium.batsense.net                                            | India   | Airtel     | @realaravinth                          |\n| https://md.vern.cc                                                        | US      | Hetzner    | [~vern](https://vern.cc)               |\n| http://md.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion/ | N/A     | Hetzner    | [~vern](https://vern.cc)               |\n| http://vernaqj2qr2pijpgvf3od6ssc3ulz3nv52gwr3hba5l6humuzmgq.b32.i2p/      | N/A     | Hetzner    | [~vern](https://vern.cc)               |\n| https://medium.hostux.net                                                 | France  | Gandi      | [hostux](https://hostux.net)           |\n| https://r.sudovanilla.org                                                 | US      | Selfhosted | [SudoVanilla](https://sudovanilla.org) |\n| https://libmedium.ducks.party                                             | DE      | Datalix    | [ducks.party](https://ducks.party)     |\n## Deploy\n\n1. Grab [`./config/default.toml`](./config/default.toml) and make\n   necessary changes\n\n2. AMD64 pre-compiled images are available on DockerHub.\n\n```\ndocker run -d \\\n  -v ./config/default.toml:/etc/libmedium/config.toml \\\n  -p 8082:7000 \\\n  --restart always \\\n  --name libmedium \\\n  realaravinth/libmedium\n```\n\nIf you are on a different architecture, run make docker and then run the\nabove command.\n\n```\nmake docker\n```\n\n---\n\nInspired by [Scribe - An Alternative Medium Frontend](https://sr.ht/~edwardloveall/scribe)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frealaravinth%2Flibmedium","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frealaravinth%2Flibmedium","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frealaravinth%2Flibmedium/lists"}