{"id":124,"date":"2025-03-01T18:03:00","date_gmt":"2025-03-01T17:03:00","guid":{"rendered":"https:\/\/wordpress.qa.desoter.eu\/?p=124"},"modified":"2025-03-01T18:05:21","modified_gmt":"2025-03-01T17:05:21","slug":"panoramax","status":"publish","type":"post","link":"https:\/\/desoter.it\/en\/2025\/03\/panoramax\/","title":{"rendered":"Panoramax"},"content":{"rendered":"\n<p><a href=\"https:\/\/panoramax.fr\/\" data-type=\"link\" data-id=\"https:\/\/panoramax.fr\/\" target=\"_blank\" rel=\"noreferrer noopener\">Panoramax<\/a> is a very promising free and open source alternative to street-level images platforms like Google Streetview and Microsoft Bing one.<\/p>\n\n\n\n<p>It has federation as one of its core principles so the growth of the project, but most importantly the hosting part of it, can be distributed among multiple instances (websites). As stated in their <a href=\"https:\/\/docs.panoramax.fr\/federated-catalog\/\" data-type=\"link\" data-id=\"https:\/\/docs.panoramax.fr\/federated-catalog\/\" target=\"_blank\" rel=\"noreferrer noopener\">documentation<\/a>, anyone willing to put a reasonable effort in providing the most production-like experience on their instance can be federated into the catalog at  https:\/\/panoramax.xyz\/api which stores only metadata of the photos, while the actual pictures remain on the original host.<\/p>\n\n\n\n<p>Authentication, for photos uploading, can be delegated to OpenStreetMap using OAuth2 which is a quick way to onboard users. This is the easy-to-follow <a href=\"https:\/\/docs.panoramax.fr\/api\/install\/tutorials\/running_docker_osm_auth\/\" data-type=\"link\" data-id=\"https:\/\/docs.panoramax.fr\/api\/install\/tutorials\/running_docker_osm_auth\/\" target=\"_blank\" rel=\"noreferrer noopener\">tutorial <\/a>for deploying with Docker.<\/p>\n\n\n\n<p>I&#8217;m experimenting the hosting of an instance at small scale with Kubernetes and I plan to share my Helm Chart on my Gitea repo once it&#8217;s a bit more mature. I mentioned small scale not only for the resources I&#8217;m dedicating to it but also because an instance owner can enforce the uploading of photos belonging to a specific geographical area (<a href=\"https:\/\/docs.panoramax.fr\/api\/install\/deep_dive\/excluded_areas\/\" data-type=\"link\" data-id=\"https:\/\/docs.panoramax.fr\/api\/install\/deep_dive\/excluded_areas\/\" target=\"_blank\" rel=\"noreferrer noopener\">doc<\/a>). One addition I plan on doing is the hosting of pictures on S3 buckets both for price and performance reasons. There is a small guide on the <a href=\"https:\/\/docs.panoramax.fr\/api\/install\/settings\/#external-serving-of-pictures-files\" data-type=\"link\" data-id=\"https:\/\/docs.panoramax.fr\/api\/install\/settings\/#external-serving-of-pictures-files\" target=\"_blank\" rel=\"noreferrer noopener\">documentation<\/a> but I&#8217;m struggling a bit on figuring it out \ud83d\ude05. Also, the cloud provider I use (OVH) doesn&#8217;t yet support some features needed to opt for an object storage solution (mostly the public-read at bucket level).<\/p>\n\n\n\n<p>Maybe there will be follow-ups&#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Panoramax is a very promising free and open source alternative to street-level images platforms like Google Streetview and Microsoft Bing one. It has federation as one of its core principles so the growth of the project, but most importantly the hosting part of it, can be distributed among multiple instances (websites). As stated in their [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":""},"categories":[25],"tags":[24,22,23,21],"class_list":["post-124","post","type-post","status-publish","format-standard","hentry","category-open-source","tag-foss","tag-hosting","tag-kubernetes","tag-panoramax"],"_links":{"self":[{"href":"https:\/\/desoter.it\/en\/wp-json\/wp\/v2\/posts\/124","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/desoter.it\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/desoter.it\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/desoter.it\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/desoter.it\/en\/wp-json\/wp\/v2\/comments?post=124"}],"version-history":[{"count":2,"href":"https:\/\/desoter.it\/en\/wp-json\/wp\/v2\/posts\/124\/revisions"}],"predecessor-version":[{"id":127,"href":"https:\/\/desoter.it\/en\/wp-json\/wp\/v2\/posts\/124\/revisions\/127"}],"wp:attachment":[{"href":"https:\/\/desoter.it\/en\/wp-json\/wp\/v2\/media?parent=124"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/desoter.it\/en\/wp-json\/wp\/v2\/categories?post=124"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/desoter.it\/en\/wp-json\/wp\/v2\/tags?post=124"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}