[{"data":1,"prerenderedAt":715},["ShallowReactive",2],{"docs-pages-en":3,"doc-en-updates-and-backups":154},[4,11,16,21,26,31,37,48,56,65,73,80,88,92,101,105,113,118,123,128,134,139,144,149],{"path":5,"title":6,"description":7,"order":8,"group":9,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Finstallation","Installation","Install CloseYourIt on your own server with one command.",1,"start",null,{"path":12,"title":13,"description":14,"order":15,"group":9,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fsettings","Settings","Every setting in the .env file, what it does and which ones you must never change.",2,{"path":17,"title":18,"description":19,"order":20,"group":9,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fdatabase","Database","What the database is, what is inside, how long data stays and how much room it takes.",3,{"path":22,"title":23,"description":24,"order":25,"group":9,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fupdates-and-backups","Updates and backups","Update to a new version, back up and restore the database, check the install.",4,{"path":27,"title":28,"description":29,"order":30,"group":9,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Ftroubleshooting","Troubleshooting","What to check when the install, the certificate, email or incoming data do not work.",5,{"path":32,"title":33,"description":34,"order":35,"group":36,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fconnect-your-apps","Connect your apps","Every tool that sends data to CloseYourIt, and what each one collects.",6,"connect",{"path":38,"title":39,"description":40,"order":41,"group":10,"parent":42,"package":43,"note":44,"collects":45,"status":10},"\u002Fdocs\u002Fsdk-ruby","Ruby \u002F Rails","The closeyourit-ruby gem sends errors, logs, slow queries and job metrics from a Rails app.",7,"connect-your-apps","closeyourit-ruby","Errors, logs, slow queries and methods, background jobs.",{"errors":46,"logs":46,"performance":46,"visits":47,"servers":47},"full","none",{"path":49,"title":50,"description":51,"order":52,"group":10,"parent":42,"package":53,"note":54,"collects":55,"status":10},"\u002Fdocs\u002Fsdk-javascript","JavaScript","The @bussolabs\u002Fcloseyourit-js package works in the browser and on Node 20.16 or newer.",8,"@bussolabs\u002Fcloseyourit-js","Browser and Node, framework adapters and database queries from 0.13.0.",{"errors":46,"logs":46,"performance":46,"visits":46,"servers":47},{"path":57,"title":58,"description":59,"order":60,"group":10,"parent":42,"package":61,"note":62,"collects":63,"status":10},"\u002Fdocs\u002Fsdk-dart","Dart \u002F Flutter","The closeyourit package captures the errors of Flutter apps, even when the phone is offline.",9,"closeyourit","Public errors, logs and metrics from 0.9.3.",{"errors":46,"logs":64,"performance":64,"visits":47,"servers":47},"partial",{"path":66,"title":67,"description":68,"order":69,"group":10,"parent":42,"package":61,"note":70,"collects":71,"status":72},"\u002Fdocs\u002Fsdk-python","Python","The closeyourit package sends errors, logs and metrics from server-side Python applications.",10,"Server side. SQLAlchemy; Django query monitoring and FastAPI\u002FStarlette from 0.4.0.",{"errors":46,"logs":46,"performance":64,"visits":47,"servers":47},"pre_alpha",{"path":74,"title":75,"description":76,"order":77,"group":10,"parent":42,"package":75,"note":78,"collects":79,"status":10},"\u002Fdocs\u002Fsdk-sentry","Sentry SDK","Send errors with a compatible Sentry SDK; sessions and crashes have separate profiles.",11,"Compatible errors; sessions and crashes require a verified profile.",{"errors":46,"logs":47,"performance":47,"visits":47,"servers":47},{"path":81,"title":82,"description":83,"order":84,"group":10,"parent":42,"package":85,"note":86,"collects":87,"status":10},"\u002Fdocs\u002Fagent-server","Server agent","A small program on the server that sends the state of the machine every 60 seconds.",12,"closeyourit-agent","CPU, memory, disks, network, containers and services.",{"errors":47,"logs":64,"performance":47,"visits":47,"servers":46},{"path":89,"title":90,"description":91,"order":84,"group":36,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fnuxt","Vue and Nuxt","Connect Nuxt browser errors and Nitro server errors without exposing a server token.",{"path":93,"title":94,"description":95,"order":96,"group":10,"parent":42,"package":97,"note":98,"collects":99,"status":100},"\u002Fdocs\u002Fagent-kubernetes","Kubernetes","A read-only observer of the cluster: one copy per cluster.",13,"closeyourit-kube","Machines, apps and error events of the cluster.",{"errors":47,"logs":47,"performance":47,"visits":47,"servers":46},"coming",{"path":102,"title":103,"description":104,"order":96,"group":36,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fopentelemetry","OpenTelemetry","Send server traces, metrics and logs through the optional OTLP receiver.",{"path":106,"title":107,"description":108,"order":109,"group":10,"parent":42,"package":110,"note":111,"collects":112,"status":10},"\u002Fdocs\u002Fcli","cyi CLI","The closeyourit command, cyi for short: manage projects, errors and tickets from the terminal.",14,"@bussolabs\u002Fcloseyourit-cli","It collects no data: it drives CloseYourIt from the terminal.",{"errors":47,"logs":47,"performance":47,"visits":47,"servers":47},{"path":114,"title":115,"description":116,"order":117,"group":36,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fhttp-api","HTTP API","Send errors, logs, metrics and page views with plain HTTP requests, without an SDK.",15,{"path":119,"title":120,"description":121,"order":122,"group":36,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fgithub-app","GitHub","Connect GitHub repositories to tickets and releases with your own GitHub App.",16,{"path":124,"title":125,"description":126,"order":127,"group":36,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fingest-gateway","Ingest gateway","Keep incoming errors, logs and metrics safe when the app is slow or restarting.",17,{"path":129,"title":130,"description":131,"order":132,"group":133,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fai","AI","Turn on assistant, analysis, dictation and smart search with a CloseYourIt AI key or your own provider.",18,"automation",{"path":135,"title":136,"description":137,"order":138,"group":133,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fautomator","Automator","Let tickets be worked automatically on your own Linux machine, with Claude Code, Codex or both.",19,{"path":140,"title":141,"description":142,"order":143,"group":36,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fstack-coverage","Frameworks and stack coverage","Choose a published SDK or understand the limits of a locally tested integration.",20,{"path":145,"title":146,"description":147,"order":148,"group":36,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fmonitoring","Traces, measurements and sessions","Explore the new signals, compare releases and recover original error locations.",21,{"path":150,"title":151,"description":152,"order":153,"group":36,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fnode-database","Node databases","Monitor slow and repeated queries with pg, mysql2, Drizzle and Prisma PostgreSQL.",22,{"id":155,"title":23,"body":156,"collects":10,"description":24,"extension":709,"group":9,"meta":710,"navigation":711,"note":10,"order":25,"package":10,"parent":10,"path":22,"seo":712,"status":10,"stem":713,"__hash__":714},"docs_en\u002Fdocs\u002Fupdates-and-backups.md",{"type":157,"value":158,"toc":700},"minimark",[159,164,185,204,212,218,222,240,303,306,337,341,381,393,406,410,416,461,468,472,542,546,558,620,624,691,696],[160,161,163],"h2",{"id":162},"update","Update",[165,166,171],"pre",{"className":167,"code":168,"language":169,"meta":170,"style":170},"language-bash shiki shiki-themes github-light github-dark","closeyourit update\n","bash","",[172,173,174],"code",{"__ignoreMap":170},[175,176,178,181],"span",{"class":177,"line":8},"line",[175,179,61],{"class":180},"sScJk",[175,182,184],{"class":183},"sZZnC"," update\n",[186,187,188,189,192,193,196,197,199,200,203],"p",{},"It first downloads the files of the new version (",[172,190,191],{},"compose.yml",", ",[172,194,195],{},"Caddyfile",", the queue settings and the ",[172,198,61],{}," command itself): if they do not exist, it stops and nothing changes. Then it makes a backup, downloads the new version, updates the database and restarts. If the images of the new version cannot be downloaded, or it does not answer within 3 minutes, it goes back to the previous version and files by itself and tells you which backup to restore if needed. The backup taken before the update stays in ",[172,201,202],{},"backups\u002F",".",[186,205,206,207,211],{},"Going back changes the version of the app, ",[208,209,210],"strong",{},"not the database",": changes the new version already made to it stay. If the old version misbehaves after that, restore the backup taken before the update.",[186,213,214,215,203],{},"To install a specific version: ",[172,216,217],{},"closeyourit update 1.4.0",[160,219,221],{"id":220},"what-the-backup-contains","What the backup contains",[186,223,224,225,228,229,232,233,236,237,203],{},"A copy of the main database is made ",[208,226,227],{},"every night at 03:00",". The last ",[208,230,231],{},"7"," stay in ",[172,234,235],{},"\u002Fopt\u002Fcloseyourit\u002Fbackups\u002F",", readable by root only; the output of each run goes to ",[172,238,239],{},"\u002Fvar\u002Flog\u002Fcloseyourit-backup.log",[241,242,243,256],"table",{},[244,245,246],"thead",{},[247,248,249,253],"tr",{},[250,251,252],"th",{},"Thing",[250,254,255],{},"In the backup",[257,258,259,268,281,294],"tbody",{},[247,260,261,265],{},[262,263,264],"td",{},"Projects, tickets, errors, logs, metrics, visits",[262,266,267],{},"yes",[247,269,270,276],{},[262,271,272,273],{},"The secret keys in ",[172,274,275],{},"\u002Fopt\u002Fcloseyourit\u002F.env",[262,277,278],{},[208,279,280],{},"no",[247,282,283,290],{},[262,284,285,286,289],{},"Uploaded files (Docker volume ",[172,287,288],{},"closeyourit_storage",")",[262,291,292],{},[208,293,280],{},[247,295,296,299],{},[262,297,298],{},"Requests waiting in the ingest gateway queue",[262,300,301],{},[208,302,280],{},[186,304,305],{},"The two that matter:",[307,308,309,323],"ul",{},[310,311,312,315,316,319,320,322],"li",{},[208,313,314],{},"The secret keys."," Without the ",[172,317,318],{},".env"," the install was made with, the encrypted data in a backup cannot be read. Keep a copy of ",[172,321,318],{}," outside the server.",[310,324,325,328,329,332,333,336],{},[208,326,327],{},"Uploaded files."," Attachments and session replays are files, not rows. Either store them on S3 (",[172,330,331],{},"AWS_S3_BUCKET",", see ",[334,335,13],"a",{"href":12},") or copy the volume yourself.",[160,338,340],{"id":339},"back-up-and-restore","Back up and restore",[165,342,344],{"className":167,"code":343,"language":169,"meta":170,"style":170},"closeyourit backup              # make a copy now\ncloseyourit restore \u003Cfile>      # bring the database back to a copy\n",[172,345,346,357],{"__ignoreMap":170},[175,347,348,350,353],{"class":177,"line":8},[175,349,61],{"class":180},[175,351,352],{"class":183}," backup",[175,354,356],{"class":355},"sJ8bj","              # make a copy now\n",[175,358,359,361,364,368,371,375,378],{"class":177,"line":15},[175,360,61],{"class":180},[175,362,363],{"class":183}," restore",[175,365,367],{"class":366},"szBVR"," \u003C",[175,369,370],{"class":183},"fil",[175,372,374],{"class":373},"sVt8B","e",[175,376,377],{"class":366},">",[175,379,380],{"class":355},"      # bring the database back to a copy\n",[186,382,383,386,387,389,390,203],{},[172,384,385],{},"\u003Cfile>"," is the name of a file in ",[172,388,235],{},", for example ",[172,391,392],{},"closeyourit-20261003-030000.dump",[186,394,395,398,399,402,403,405],{},[172,396,397],{},"restore"," stops the app, ",[208,400,401],{},"deletes the current database",", creates it again from the copy and starts the app. Everything written after that copy is gone. It asks you to type ",[172,404,397],{}," before it does anything.",[160,407,409],{"id":408},"keep-a-copy-elsewhere","Keep a copy elsewhere",[186,411,412,413,415],{},"A copy on the same server does not survive the loss of the server. To send each copy to Amazon S3 too, set in ",[172,414,275],{},":",[165,417,419],{"className":167,"code":418,"language":169,"meta":170,"style":170},"BACKUP_S3_BUCKET=my-backups\nAWS_REGION=eu-central-1\nAWS_ACCESS_KEY_ID=...\nAWS_SECRET_ACCESS_KEY=...\n",[172,420,421,432,442,452],{"__ignoreMap":170},[175,422,423,426,429],{"class":177,"line":8},[175,424,425],{"class":373},"BACKUP_S3_BUCKET",[175,427,428],{"class":366},"=",[175,430,431],{"class":183},"my-backups\n",[175,433,434,437,439],{"class":177,"line":15},[175,435,436],{"class":373},"AWS_REGION",[175,438,428],{"class":366},[175,440,441],{"class":183},"eu-central-1\n",[175,443,444,447,449],{"class":177,"line":20},[175,445,446],{"class":373},"AWS_ACCESS_KEY_ID",[175,448,428],{"class":366},[175,450,451],{"class":183},"...\n",[175,453,454,457,459],{"class":177,"line":25},[175,455,456],{"class":373},"AWS_SECRET_ACCESS_KEY",[175,458,428],{"class":366},[175,460,451],{"class":183},[186,462,463,464,467],{},"Each copy goes to ",[172,465,466],{},"s3:\u002F\u002F\u003Cbucket>\u002Fcloseyourit\u002F",". Copies on S3 are not deleted by CloseYourIt: set an expiry rule on the bucket.",[160,469,471],{"id":470},"move-to-another-server","Move to another server",[473,474,475,488,501,527,536,539],"ol",{},[310,476,477,478,481,482,484,485,487],{},"On the old server: ",[172,479,480],{},"closeyourit backup",", then copy the newest file in ",[172,483,202],{}," and ",[172,486,275],{}," somewhere safe.",[310,489,490,491,494,495,332,498,500],{},"On the new server: install the ",[208,492,493],{},"same version"," (",[172,496,497],{},"CLOSEYOURIT_VERSION=\u003Cversion>",[334,499,6],{"href":5},").",[310,502,503,504,506,507,510,511,514,515,518,519,522,523,526],{},"In the new ",[172,505,318],{},", replace ",[172,508,509],{},"SECRET_KEY_BASE",", the three ",[172,512,513],{},"AR_ENCRYPTION_*"," keys and ",[172,516,517],{},"SECRET_ASSETS_MASTER_KEY"," with the values from the old one. Leave ",[172,520,521],{},"POSTGRES_PASSWORD"," as the new install wrote it. Copy your own settings across too: email, S3 (",[172,524,525],{},"AWS_*",", without them attachments and replays stored there cannot be opened), GitHub, Telegram.",[310,528,529,530,532,533,203],{},"Put the backup file in ",[172,531,235],{}," and run ",[172,534,535],{},"closeyourit restore \u003Cfile>",[310,537,538],{},"Copy the uploaded files too, unless they are on S3.",[310,540,541],{},"Point the domain to the new server.",[160,543,545],{"id":544},"check-the-install","Check the install",[165,547,549],{"className":167,"code":548,"language":169,"meta":170,"style":170},"closeyourit doctor\n",[172,550,551],{"__ignoreMap":170},[175,552,553,555],{"class":177,"line":8},[175,554,61],{"class":180},[175,556,557],{"class":183}," doctor\n",[241,559,560,570],{},[244,561,562],{},[247,563,564,567],{},[250,565,566],{},"Check",[250,568,569],{},"It complains when",[257,571,572,580,588,596,604,612],{},[247,573,574,577],{},[262,575,576],{},"Disk",[262,578,579],{},"less than 10% is free",[247,581,582,585],{},[262,583,584],{},"App",[262,586,587],{},"it does not answer",[247,589,590,593],{},[262,591,592],{},"HTTPS certificate",[262,594,595],{},"it expires in less than 14 days, or the address does not answer",[247,597,598,601],{},[262,599,600],{},"Backup",[262,602,603],{},"there is none, or the last one is older than 26 hours",[247,605,606,609],{},[262,607,608],{},"Ingest gateway and queue",[262,610,611],{},"the gateway is on and one of them is down or keeps restarting",[247,613,614,617],{},[262,615,616],{},"Version",[262,618,619],{},"a newer one is available (a note, not a problem)",[160,621,623],{"id":622},"other-commands","Other commands",[241,625,626,636],{},[244,627,628],{},[247,629,630,633],{},[250,631,632],{},"Command",[250,634,635],{},"Does",[257,637,638,648,658,668,681],{},[247,639,640,645],{},[262,641,642],{},[172,643,644],{},"closeyourit status",[262,646,647],{},"shows the services and the version",[247,649,650,655],{},[262,651,652],{},[172,653,654],{},"closeyourit logs",[262,656,657],{},"follows the log of the app and the worker",[247,659,660,665],{},[262,661,662],{},[172,663,664],{},"closeyourit restart",[262,666,667],{},"restarts after a settings change",[247,669,670,675],{},[262,671,672],{},[172,673,674],{},"closeyourit enable ingest",[262,676,677,678],{},"turns on the ",[334,679,680],{"href":124},"ingest gateway",[247,682,683,688],{},[262,684,685],{},[172,686,687],{},"closeyourit disable ingest",[262,689,690],{},"turns it off",[186,692,693,694,203],{},"Something not working? See ",[334,695,28],{"href":27},[697,698,699],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":170,"searchDepth":15,"depth":15,"links":701},[702,703,704,705,706,707,708],{"id":162,"depth":15,"text":163},{"id":220,"depth":15,"text":221},{"id":339,"depth":15,"text":340},{"id":408,"depth":15,"text":409},{"id":470,"depth":15,"text":471},{"id":544,"depth":15,"text":545},{"id":622,"depth":15,"text":623},"md",{},true,{"title":23,"description":24},"docs\u002Fupdates-and-backups","70E73QiNBaupseDx4s_yRqhLn8Brx-RTkWep76nyPis",1791302513339]