I originally created an account on the public Atuin server and was able to sync successfully a few weeks ago. Now when I run atuin sync
, I consistently get an “operation timed out” error.
I also ran into login issues when trying to access the same account from another machine. Even though I could successfully log in and out on the original machine, other machines would always return “incorrect password,” even after I reset the password. Eventually, I created a new account, but ran into the same problem — login fails on any machine other than the one it was created on.
To troubleshoot further, I set up a self-hosted Atuin server. I was able to register a new user and confirm it appears in the database, so I’m confident the server is working. But when I try to sync, I get the same “operation timed out” error. I am able to login to my self-hosted server on multiple machines though so that fixed the login issue.
Something weird is happening with syncing and doesn’t seem to be related to which server you use. Looking for some help to debug this issue. Thanks!
user@debian ~/.dotfiles/atuin/.config/atuin (master)> atuin sync
Error: a request to the sync server failed: "error sending request for url (https://my_own_hosted_server.com/api/v0/record): error trying to connect: operation timed out"
Location:
crates/atuin/src/command/client/sync.rs:91:38
user@debian ~> atuin --version
atuin 18.5.0
user@debian ~> cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux trixie/sid"
NAME="Debian GNU/Linux"
VERSION_CODENAME=trixie
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
Linux debian 6.12.21-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.21-1 (2025-03-30) x86_64 GNU/Linux
user@debian ~> curl -k -i https://my_server_url.com/api/v0/record
HTTP/2 400
alt-svc: h3=":443"; ma=2592000
atuin-version: 18.5.0
content-type: application/json
date: Thu, 17 Apr 2025 00:28:54 GMT
server: Caddy
x-clacks-overhead: GNU Terry Pratchett, Kris Nova
content-length: 41
{"reason":"missing authorization header"}⏎
ATUIN_LOG=debug atuin sync
2025-04-17T00:30:37.270490Z DEBUG atuin_client::database: opening sqlite database at "~/.local/share/atuin/history.db"
2025-04-17T00:30:37.271069Z DEBUG sqlx::query: summary="PRAGMA journal_mode = WAL; …" db.statement="PRAGMA journal_mode = WAL; PRAGMA foreign_keys = ON; PRAGMA synchronous = NORMAL;" rows_affected=0 rows_returned=1 elapsed=244.065µs
2025-04-17T00:30:37.271144Z DEBUG atuin_client::database: running sqlite database setup
2025-04-17T00:30:37.271184Z DEBUG sqlx::query: summary="CREATE TABLE IF NOT …" db.statement="CREATE TABLE IF NOT EXISTS _sqlx_migrations (...)" rows_affected=0 rows_returned=0 elapsed=8.547µs
2025-04-17T00:30:37.271310Z DEBUG sqlx::query: summary="SELECT version FROM _sqlx_migrations …" db.statement="SELECT version FROM _sqlx_migrations WHERE success = false ORDER BY version LIMIT 1" rows_affected=0 rows_returned=0 elapsed=30.573µs
2025-04-17T00:30:37.271410Z DEBUG sqlx::query: summary="SELECT version, checksum FROM …" db.statement="SELECT version, checksum FROM _sqlx_migrations ORDER BY version" rows_affected=0 rows_returned=5 elapsed=22.933µs
2025-04-17T00:30:37.271503Z DEBUG atuin_client::record::sqlite_store: opening sqlite database at "~/.local/share/atuin/records.db"
2025-04-17T00:30:37.271967Z DEBUG sqlx::query: summary="PRAGMA journal_mode = WAL; …" db.statement="PRAGMA journal_mode = WAL; PRAGMA foreign_keys = ON;" rows_affected=0 rows_returned=1 elapsed=146.556µs
2025-04-17T00:30:37.271997Z DEBUG atuin_client::record::sqlite_store: running sqlite database setup
2025-04-17T00:30:37.272082Z DEBUG sqlx::query: summary="CREATE TABLE IF NOT …" db.statement="CREATE TABLE IF NOT EXISTS _sqlx_migrations (...)" rows_affected=0 rows_returned=0 elapsed=15.211µs
2025-04-17T00:30:37.272140Z DEBUG sqlx::query: summary="SELECT version FROM _sqlx_migrations …" db.statement="SELECT version FROM _sqlx_migrations WHERE success = false ORDER BY version LIMIT 1" rows_affected=0 rows_returned=0 elapsed=35.715µs
2025-04-17T00:30:37.272176Z DEBUG sqlx::query: summary="SELECT version, checksum FROM …" db.statement="SELECT version, checksum FROM _sqlx_migrations ORDER BY version" rows_affected=0 rows_returned=2 elapsed=19.516µs
2025-04-17T00:30:37.273015Z DEBUG sqlx::query: summary="PRAGMA journal_mode = WAL; …" db.statement="PRAGMA journal_mode = WAL; PRAGMA foreign_keys = ON;" rows_affected=0 rows_returned=1 elapsed=77.719µs
2025-04-17T00:30:37.274303Z DEBUG sqlx::query: summary="select host, tag, max(idx) …" db.statement="select host, tag, max(idx) from store group by host, tag" rows_affected=0 rows_returned=1 elapsed=1.262647ms
2025-04-17T00:30:37.274354Z DEBUG reqwest::connect: starting new connection: https://<your-server-hostname>/
2025-04-17T00:30:37.274421Z DEBUG hyper::client::connect::dns: resolving host="<your-server-hostname>"
Error: a request to the sync server failed: "error sending request for url (https://my_hosted_url.com/api/v0/record): error trying to connect: operation timed out"
Location:
crates/atuin/src/command/client/sync.rs:91:38