{"id":28628274,"url":"https://github.com/fgeller/bilder","last_synced_at":"2025-10-24T21:41:30.587Z","repository":{"id":44985317,"uuid":"64516584","full_name":"fgeller/bilder","owner":"fgeller","description":"go web app to host photo albums","archived":false,"fork":false,"pushed_at":"2020-05-18T07:00:55.000Z","size":1969,"stargazers_count":38,"open_issues_count":0,"forks_count":10,"subscribers_count":5,"default_branch":"master","last_synced_at":"2023-03-12T04:48:08.613Z","etag":null,"topics":["album","bilder","golang","photo-albums","photo-gallery","thumbnails"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fgeller.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-07-29T23:45:09.000Z","updated_at":"2022-09-07T05:20:44.000Z","dependencies_parsed_at":"2022-07-13T04:20:46.528Z","dependency_job_id":null,"html_url":"https://github.com/fgeller/bilder","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"purl":"pkg:github/fgeller/bilder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fgeller%2Fbilder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fgeller%2Fbilder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fgeller%2Fbilder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fgeller%2Fbilder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fgeller","download_url":"https://codeload.github.com/fgeller/bilder/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fgeller%2Fbilder/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259444983,"owners_count":22858553,"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":["album","bilder","golang","photo-albums","photo-gallery","thumbnails"],"created_at":"2025-06-12T10:11:56.829Z","updated_at":"2025-10-24T21:41:25.530Z","avatar_url":"https://github.com/fgeller.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# bilder - web app to host photo albums.\n\n - Albums are directories with JPEG images that can be managed via rsync/scp.\n - It finds new albums and reloads their configuration and contents dynamically.\n - Thumbnails are generated automatically (filename_thumb.jpg).\n - Basic auth can be enabled per album.\n - Comes as a single binary.\n\nYou can either download a [release](https://github.com/fgeller/bilder/releases) or get it via\n\n```\n$ go get github.com/fgeller/bilder\n```\n\n[Here](https://felix.geller.io/bilder/b/kitties)'s a live demo to click around.\n\nA screenshot:\n\n![bilder demo](screenshot.png)\n\nA screencast:\n\n![bilder demo](demo.gif)\n\n## Configuration\n\nYou can configure bilder via an optional JSON file. You can pass its location to **bilder** on startup:\n\n```\n$ bilder -config /path/to/your/config.json\n```\n\nIt currently supports the following options:\n\n + `addr` *default:* `0.0.0.0:8173`: This is the address that bilder will serve on.\n + `url-path-prefix` *default:* `\"\"`: This is a prefix that can be added to the assets' paths that are loaded from the browser. This allows bilder to run behind a proxy like nginx (e.g. if you want to use nginx to  terminate the HTTPS connection). Consider the path of the demo linked above: [https://geller.io/bilder/b/kitties](https://geller.io/bilder/b/kitties). In this case nginx proxy passes to bilder under the `/bilder` path which we would set `url-path-prefix` to:\n```\nlocation /bilder/ {\n    proxy_pass http://localhost:8173/;\n}\n```\n + `bilder-dir` *default:* `\"bilder\"`: This is the path of the folder that bilder scans for album directories. In the following example, this directory would contain a single album `kitties`:\n```\n$ find bilder\nbilder\nbilder/kitties\nbilder/kitties/happy.jpg\n```\n + `reload-delay-seconds` *default:* `10`: The time in seconds to wait between scans of `bilder-dir`.\n + `access-log` *default:* `\"\"`: When set to a file name, bilder logs requests against the `/b` path in combined log format to the set file.\n\nThis is the JSON file that is used for the [demo](https://geller.io/bilder/b/kitties):\n```\n{ \"bilder-dir\": \"/home/fgeller/var/bilder\", \"url-path-prefix\": \"/bilder\", \"addr\": \"0.0.0.0:8173\" }\n```\n\n### Albums\n\nEach sub-directory of the `bilder-dir` directory is considered an album if it contains JPG images.\nOnly JPG images are currently supported.\nYou can add more information about the album by adding a `bilder.json` to the directory.\nIt currently supports the following options:\n\n + `user` *default:* `\"\"`, `pass` *default:* `\"\"`: If both are non-empty strings, bilder will use them as credentials to enable basic authentication for this album.\n + `title` *default:* `\"\"`: Title that should be set for the album, defaults to the directory name.\n + `captions` *default:* `null`: Map object from file name to caption string (consider the demo example below).\n + `sort-order` *default:* `\"\"`: Identifies sort order for images, supported: `ModTime` (newest first), `Name` (by file name, default).\n\nThis is the `bilder.json` file in the `kitties` directory of the [demo](https://geller.io/bilder/b/kitties):\n```\n{\n  \"title\": \"Kitties\",\n  \"captions\": {\n    \"cat-eyes.jpg\": \"looking\",\n    \"mini-monster.jpg\": \"rooooar!\",\n    \"yawning.jpg\": \"Boring!\"\n  }\n}\n```\n\n## Credits\n\nAll images in the demos are free images from [pixabay](https://pixabay.com/).\n\nbilder uses the following libraries:\n\n + @dimsemenov's [PhotoSwipe](https://github.com/dimsemenov/PhotoSwipe) for rendering the album.\n + @nfnt's [resize](https://github.com/nfnt/resize) to generate thumbnails.\n + @oliamb's [cutter](https://github.com/oliamb/cutter) to crop thumbnails to a centered square.\n + @satori's [go.uuid](https://github.com/satori/go.uuid) to generate a random session ID.\n + @gorilla's [handlers](https://github.com/gorilla/handlers) for logging requests.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffgeller%2Fbilder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffgeller%2Fbilder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffgeller%2Fbilder/lists"}