{"id":18727044,"url":"https://github.com/607011/ctsesam-server-go","last_synced_at":"2025-08-11T18:08:38.673Z","repository":{"id":143525375,"uuid":"156651223","full_name":"607011/ctSESAM-server-go","owner":"607011","description":"c't SESAM storage server (written in Go)","archived":false,"fork":false,"pushed_at":"2019-01-08T09:10:13.000Z","size":36,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-19T19:53:44.121Z","etag":null,"topics":["go","golang","password-manager","security","server"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/607011.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":"2018-11-08T04:43:11.000Z","updated_at":"2019-01-08T09:10:14.000Z","dependencies_parsed_at":null,"dependency_job_id":"f555dd44-93ca-4857-8d4c-055e0c2ec670","html_url":"https://github.com/607011/ctSESAM-server-go","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/607011/ctSESAM-server-go","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/607011%2FctSESAM-server-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/607011%2FctSESAM-server-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/607011%2FctSESAM-server-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/607011%2FctSESAM-server-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/607011","download_url":"https://codeload.github.com/607011/ctSESAM-server-go/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/607011%2FctSESAM-server-go/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269931473,"owners_count":24498722,"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","status":"online","status_checked_at":"2025-08-11T02:00:10.019Z","response_time":75,"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":["go","golang","password-manager","security","server"],"created_at":"2024-11-07T14:16:13.223Z","updated_at":"2025-08-11T18:08:38.639Z","avatar_url":"https://github.com/607011.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# c't SESAM Storage Server\n\nThis is a rewrite of the [c't SESAM server](https://github.com/ola-ct/ctSESAM-server). It's now written in Go instead of PHP.\n\n_c't SESAM Storage Server_ (the _SESAM server_) is a data store for [c't SESAM](https://github.com/ola-ct/Qt-SESAM). It's supposed to be installed on a Unix-like machine and used by only you or a small community (your family, close friends). It implements a simple REST API to read, write and delete entries in an SQLite 3 database.\n\n## Installation\n\n### Prerequisites\n\nYou need a Unix machine with Go 1.11 (or newer) and SQLite 3. It depends on your operating system (one the many Linux flavors, macOS etc.) how to install these components.\n\nYou also need some extra Go packages: \"github.com/mattn/go-sqlite3\", \"github.com/abbot/go-http-auth\" and \"golang.org/x/crypto/bcrypt\". You can easily `go get` them, e.g. `go get github.com/mattn/go-sqlite3`.\n\n### Get the code\n\nClone the _SESAM server_ repository into a directory of your choice:\n\n```\ngit clone https://github.com/ola-ct/ctSESAM-server-go.git\n```\n\nThis creates the directory ctSESAM-server-go containing the \u0026ast;.go files with the server's code.\n\n### Add user\n\nTo restrict access _SESAM server_ authenticates users by means of [HTTP Basic authentication](https://en.wikipedia.org/wiki/Basic_access_authentication). The credentials are read from an Apache [.htpasswd](https://en.wikipedia.org/wiki/.htpasswd) file which must be placed in the top-level directory of the _SESAM server_, i.e. the directory you created in the previous step. To create a file for the user `demo` execute the following shell command:\n\n```\nhtpasswd -B -c .htpasswd demo\n```\n\nYou're then asked to type in the desired password (twice).\n\nOption `-B` enables [bcrypt](https://en.wikipedia.org/wiki/Bcrypt) hashing of the password. _SESAM server_ doesn't support any other hash methods.\n\nIf your .htpasswd file has a different name or is stored in another location, you can change the value of the constant `credentialsFile` in main.go accordingly.\n\n### Install SSL certificate\n\nSave your SSL server certificate (as \"server.crt\") and the accompanying server key (as \"server.key\") into the subdirectory \"cert\".\n\nIf you want to use other file names please edit the call to `srv.ListenAndServeTLS(\"cert/server.crt\", \"cert/server.key\")` in main.go.\n\nThe easiest and no-cost way to obtain these files is by using [acme.sh](https://github.com/Neilpang/acme.sh). You can also get a certificate from other [certificate authorities](https://en.wikipedia.org/wiki/Certificate_authority) (CA) than [Let's encrypt](https://letsencrypt.org/) like [Comodo](https://www.comodo.com/), [Godaddy](https://www.godaddy.com/web-security/ssl-certificate) or [GlobalSign](https://www.globalsign.com/en/ssl/). It's not possible to use the desktop version of c't SESAM ([Qt SESAM](https://github.com/ola-ct/Qt-SESAM)) with [self-signed certificates](https://en.wikipedia.org/wiki/Self-signed_certificate).\n\n## Run _SESAM server_\n\nYou can now start the server with\n\n```\n./run.sh\n```\n\n_SESAM server_ should print something like this:\n\n```\n*** c't SESAM storage server 0.1.2 (go1.11.2)\nCopyright (c) 2017-2018 Oliver Lau \u003cola@ct.de\u003e\nAll rights reserved.\n\nOpening log file SESAM.log ...\nParsing credentials in ./.htpasswd ...\nOpening database ./ctsesam.sqlite.db ...\nStarting database cleanup job ...\nStarting secure web server on port 8443 ...\n```\n\nAs you can see _SESAM server_ launches its HTTPS listener on port 8443. If that port is already occupied by another service, you can change the port by editing the value of the constant `port` in main.go.\n\n## Configuration\n\nA future release of _SESAM server_ will let you configure the port and the location of the .htpasswd and certificate files with the aid of a configuration file.\n\n---\n\nCopyright 2017-2018 [Oliver Lau](mailto:ola@ct.de), Heise Medien GmbH \u0026 Co. KG\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0).\n\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\n---\n\n__Diese Software wurde zu Lehr- und Demonstrationszwecken programmiert und ist nicht für den produktiven Einsatz vorgesehen. Der Autor und die Heise Medien GmbH \u0026 Co. KG haften nicht für eventuelle Schäden, die aus der Nutzung der Software entstehen, und übernehmen keine Gewähr für ihre Vollständigkeit, Fehlerfreiheit und Eignung für einen bestimmten Zweck.__\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F607011%2Fctsesam-server-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F607011%2Fctsesam-server-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F607011%2Fctsesam-server-go/lists"}