[{"data":1,"prerenderedAt":1296},["ShallowReactive",2],{"install-content":3},{"id":4,"title":5,"body":6,"description":1287,"extension":1288,"meta":1289,"navigation":1290,"path":1292,"seo":1293,"stem":1294,"__hash__":1295},"content\u002Finstall\u002Findex.md","OrthoVennPlus Installation",{"type":7,"value":8,"toc":1269},"minimark",[9,13,17,22,25,41,44,88,92,97,100,149,152,160,167,171,182,198,201,365,369,372,406,409,422,431,435,442,445,461,464,473,476,492,495,507,511,514,520,523,539,543,548,647,651,654,658,661,664,672,679,688,705,709,712,775,778,838,842,845,958,964,967,973,976,1019,1022,1029,1032,1045,1048,1054,1057,1060,1066,1069,1075,1078,1116,1119,1134,1137,1181,1184,1188,1191,1217,1220,1265],[10,11,5],"h1",{"id":12},"orthovennplus-installation",[14,15,16],"p",{},"This guide covers the normal installation path for OrthoVennPlus from the deployment package. It focuses on preparing the deployment directory, starting the platform, creating the administrator account, and checking that the workflow service is ready.",[18,19,21],"h2",{"id":20},"requirements","Requirements",[14,23,24],{},"Before installation, prepare:",[26,27,28,32,35,38],"ul",{},[29,30,31],"li",{},"Docker and Docker Compose",[29,33,34],{},"A Linux, macOS, or server host with enough CPU, memory, and disk space",[29,36,37],{},"Reference database files if you plan to use built-in species or annotation features",[29,39,40],{},"One browser-accessible web port",[14,42,43],{},"Recommended minimum for a small test deployment:",[45,46,47,60],"table",{},[48,49,50],"thead",{},[51,52,53,57],"tr",{},[54,55,56],"th",{},"Resource",[54,58,59],{},"Recommendation",[61,62,63,72,80],"tbody",{},[51,64,65,69],{},[66,67,68],"td",{},"CPU",[66,70,71],{},"8 cores",[51,73,74,77],{},[66,75,76],{},"Memory",[66,78,79],{},"16 GB",[51,81,82,85],{},[66,83,84],{},"Disk",[66,86,87],{},"100 GB free space",[18,89,91],{"id":90},"quick-start","Quick Start",[93,94,96],"h3",{"id":95},"_1-get-the-deployment-package","1. Get the Deployment Package",[14,98,99],{},"Clone or unpack the deployment package on the server:",[101,102,107],"pre",{"className":103,"code":104,"language":105,"meta":106,"style":106},"language-bash shiki shiki-themes github-light github-dark","git clone \u003Corthovenn-build-repo> orthovennplus-build\ncd orthovennplus-build\n","bash","",[108,109,110,140],"code",{"__ignoreMap":106},[111,112,115,119,123,127,130,134,137],"span",{"class":113,"line":114},"line",1,[111,116,118],{"class":117},"sScJk","git",[111,120,122],{"class":121},"sZZnC"," clone",[111,124,126],{"class":125},"szBVR"," \u003C",[111,128,129],{"class":121},"orthovenn-build-rep",[111,131,133],{"class":132},"sVt8B","o",[111,135,136],{"class":125},">",[111,138,139],{"class":121}," orthovennplus-build\n",[111,141,143,147],{"class":113,"line":142},2,[111,144,146],{"class":145},"sj4cs","cd",[111,148,139],{"class":121},[14,150,151],{},"The deployment directory should use this layout:",[101,153,158],{"className":154,"code":156,"language":157,"meta":106},[155],"language-text","orthovennplus-build\u002F\n|-- data\u002F\n|   |-- refdb\u002F\n|   |   |-- go-basic.obo\n|   |   |-- go_terms.tsv\n|   |   |-- uniprot_sprot.fasta\n|   |   |-- uniprot_sprot_annotation.dmnd\n|   |   |-- uniprot_sprot_annotation.tsv\n|   |   |-- uniprot_sprot_raw.tsv\n|   |   |-- sonicparanoid2\u002F\n|-- run.sh\n|-- docker-compose.yaml\n|-- .env.example\n|-- install_sonic_pfam_profiles.sh\n|-- setup_uniprot_refdb.py\n|-- install.md\n","text",[108,159,156],{"__ignoreMap":106},[14,161,162,163,166],{},"The files under ",[108,164,165],{},"data\u002Frefdb"," are used by GO annotation and DIAMOND-based annotation. Keep them in this directory so the containers can mount them consistently.",[93,168,170],{"id":169},"_2-create-the-environment-file","2. Create the Environment File",[14,172,173,174,177,178,181],{},"The deployment package includes ",[108,175,176],{},".env.example",". Copy it to ",[108,179,180],{},".env",":",[101,183,185],{"className":103,"code":184,"language":105,"meta":106,"style":106},"cp .env.example .env\n",[108,186,187],{"__ignoreMap":106},[111,188,189,192,195],{"class":113,"line":114},[111,190,191],{"class":117},"cp",[111,193,194],{"class":121}," .env.example",[111,196,197],{"class":121}," .env\n",[14,199,200],{},"Then replace passwords, ports, and the secret key. Review these key startup settings:",[101,202,206],{"className":203,"code":204,"language":205,"meta":106,"style":106},"language-dotenv shiki shiki-themes github-light github-dark","ORTHOVENN_IMAGE_TAG=latest\n\nAPI_PORT=18008\n# Web port opened by users in the browser.\nNGINX_PORT=18088\nPOSTGRES_PORT=15435\nREDIS_PORT=16379\n\nPOSTGRES_USER=orthovennplus\n# Replace with a strong database password.\nPOSTGRES_PASSWORD=change-this-postgres-password\nPOSTGRES_DB=orthovennplus\n\n# Required for login tokens. Use a long random value.\nSECRET_KEY=change-this-secret-key\nACCESS_TOKEN_EXPIRE_MINUTES=4320\nFIRST_REGISTERED_USER_AS_ADMIN=true\n\nCELERY_CONCURRENCY=3\nBLAST_WORKER_CONCURRENCY=2\n# Default CPU threads used by analysis modules.\nMODULE_DEFAULT_THREADS=16\nMODULE_THREAD_EDITABLE=true\n\nUPLOAD_MAX_FILE_SIZE=10737418240\n# 0 means no species count limit.\nPROJECT_SPECIES_LIMIT=20\n","dotenv",[108,207,208,213,219,225,231,237,243,249,254,260,266,272,278,283,289,295,301,307,312,318,324,330,336,342,347,353,359],{"__ignoreMap":106},[111,209,210],{"class":113,"line":114},[111,211,212],{},"ORTHOVENN_IMAGE_TAG=latest\n",[111,214,215],{"class":113,"line":142},[111,216,218],{"emptyLinePlaceholder":217},true,"\n",[111,220,222],{"class":113,"line":221},3,[111,223,224],{},"API_PORT=18008\n",[111,226,228],{"class":113,"line":227},4,[111,229,230],{},"# Web port opened by users in the browser.\n",[111,232,234],{"class":113,"line":233},5,[111,235,236],{},"NGINX_PORT=18088\n",[111,238,240],{"class":113,"line":239},6,[111,241,242],{},"POSTGRES_PORT=15435\n",[111,244,246],{"class":113,"line":245},7,[111,247,248],{},"REDIS_PORT=16379\n",[111,250,252],{"class":113,"line":251},8,[111,253,218],{"emptyLinePlaceholder":217},[111,255,257],{"class":113,"line":256},9,[111,258,259],{},"POSTGRES_USER=orthovennplus\n",[111,261,263],{"class":113,"line":262},10,[111,264,265],{},"# Replace with a strong database password.\n",[111,267,269],{"class":113,"line":268},11,[111,270,271],{},"POSTGRES_PASSWORD=change-this-postgres-password\n",[111,273,275],{"class":113,"line":274},12,[111,276,277],{},"POSTGRES_DB=orthovennplus\n",[111,279,281],{"class":113,"line":280},13,[111,282,218],{"emptyLinePlaceholder":217},[111,284,286],{"class":113,"line":285},14,[111,287,288],{},"# Required for login tokens. Use a long random value.\n",[111,290,292],{"class":113,"line":291},15,[111,293,294],{},"SECRET_KEY=change-this-secret-key\n",[111,296,298],{"class":113,"line":297},16,[111,299,300],{},"ACCESS_TOKEN_EXPIRE_MINUTES=4320\n",[111,302,304],{"class":113,"line":303},17,[111,305,306],{},"FIRST_REGISTERED_USER_AS_ADMIN=true\n",[111,308,310],{"class":113,"line":309},18,[111,311,218],{"emptyLinePlaceholder":217},[111,313,315],{"class":113,"line":314},19,[111,316,317],{},"CELERY_CONCURRENCY=3\n",[111,319,321],{"class":113,"line":320},20,[111,322,323],{},"BLAST_WORKER_CONCURRENCY=2\n",[111,325,327],{"class":113,"line":326},21,[111,328,329],{},"# Default CPU threads used by analysis modules.\n",[111,331,333],{"class":113,"line":332},22,[111,334,335],{},"MODULE_DEFAULT_THREADS=16\n",[111,337,339],{"class":113,"line":338},23,[111,340,341],{},"MODULE_THREAD_EDITABLE=true\n",[111,343,345],{"class":113,"line":344},24,[111,346,218],{"emptyLinePlaceholder":217},[111,348,350],{"class":113,"line":349},25,[111,351,352],{},"UPLOAD_MAX_FILE_SIZE=10737418240\n",[111,354,356],{"class":113,"line":355},26,[111,357,358],{},"# 0 means no species count limit.\n",[111,360,362],{"class":113,"line":361},27,[111,363,364],{},"PROJECT_SPECIES_LIMIT=20\n",[93,366,368],{"id":367},"_3-check-reference-data","3. Check Reference Data",[14,370,371],{},"Before starting the services, confirm that the required annotation files exist:",[101,373,375],{"className":103,"code":374,"language":105,"meta":106,"style":106},"ls data\u002Frefdb\u002Fgo-basic.obo\nls data\u002Frefdb\u002Fgo_terms.tsv\nls data\u002Frefdb\u002Funiprot_sprot_annotation.dmnd\nls data\u002Frefdb\u002Funiprot_sprot_annotation.tsv\n",[108,376,377,385,392,399],{"__ignoreMap":106},[111,378,379,382],{"class":113,"line":114},[111,380,381],{"class":117},"ls",[111,383,384],{"class":121}," data\u002Frefdb\u002Fgo-basic.obo\n",[111,386,387,389],{"class":113,"line":142},[111,388,381],{"class":117},[111,390,391],{"class":121}," data\u002Frefdb\u002Fgo_terms.tsv\n",[111,393,394,396],{"class":113,"line":221},[111,395,381],{"class":117},[111,397,398],{"class":121}," data\u002Frefdb\u002Funiprot_sprot_annotation.dmnd\n",[111,400,401,403],{"class":113,"line":227},[111,402,381],{"class":117},[111,404,405],{"class":121}," data\u002Frefdb\u002Funiprot_sprot_annotation.tsv\n",[14,407,408],{},"If the UniProt reference files are missing, generate them from the deployment directory:",[101,410,412],{"className":103,"code":411,"language":105,"meta":106,"style":106},"python setup_uniprot_refdb.py\n",[108,413,414],{"__ignoreMap":106},[111,415,416,419],{"class":113,"line":114},[111,417,418],{"class":117},"python",[111,420,421],{"class":121}," setup_uniprot_refdb.py\n",[14,423,424,425,430],{},"SonicParanoid2 works in graph-only mode by default. If you plan to use full SonicParanoid2 architecture\u002Fdomain mode, install the optional Pfam profile database later from ",[426,427,429],"a",{"href":428},"#optional-sonicparanoid2-pfam-profile-db","Optional SonicParanoid2 Pfam Profile DB",".",[93,432,434],{"id":433},"_4-start-with-runsh","4. Start with run.sh",[14,436,437,438,441],{},"The recommended startup command is ",[108,439,440],{},"run.sh",". It creates required data directories, pulls images, runs database migrations, and starts the Docker Compose services:",[14,443,444],{},"If the script is not executable after unpacking a release package, run:",[101,446,448],{"className":103,"code":447,"language":105,"meta":106,"style":106},"chmod +x run.sh\n",[108,449,450],{"__ignoreMap":106},[111,451,452,455,458],{"class":113,"line":114},[111,453,454],{"class":117},"chmod",[111,456,457],{"class":121}," +x",[111,459,460],{"class":121}," run.sh\n",[14,462,463],{},"Start the services:",[101,465,467],{"className":103,"code":466,"language":105,"meta":106,"style":106},".\u002Frun.sh\n",[108,468,469],{"__ignoreMap":106},[111,470,471],{"class":113,"line":114},[111,472,466],{"class":117},[14,474,475],{},"Use a specific image tag when deploying a released version:",[101,477,479],{"className":103,"code":478,"language":105,"meta":106,"style":106},".\u002Frun.sh --tag 2026-06-02\n",[108,480,481],{"__ignoreMap":106},[111,482,483,486,489],{"class":113,"line":114},[111,484,485],{"class":117},".\u002Frun.sh",[111,487,488],{"class":145}," --tag",[111,490,491],{"class":121}," 2026-06-02\n",[14,493,494],{},"Check the available options:",[101,496,498],{"className":103,"code":497,"language":105,"meta":106,"style":106},".\u002Frun.sh --help\n",[108,499,500],{"__ignoreMap":106},[111,501,502,504],{"class":113,"line":114},[111,503,485],{"class":117},[111,505,506],{"class":145}," --help\n",[93,508,510],{"id":509},"_5-open-the-website","5. Open the Website",[14,512,513],{},"After the services start, open:",[101,515,518],{"className":516,"code":517,"language":157,"meta":106},[155],"http:\u002F\u002F\u003Cserver-ip>:5920\n",[108,519,517],{"__ignoreMap":106},[14,521,522],{},"Check service status when needed:",[101,524,526],{"className":103,"code":525,"language":105,"meta":106,"style":106},"docker compose ps\n",[108,527,528],{"__ignoreMap":106},[111,529,530,533,536],{"class":113,"line":114},[111,531,532],{"class":117},"docker",[111,534,535],{"class":121}," compose",[111,537,538],{"class":121}," ps\n",[93,540,542],{"id":541},"manual-docker-compose-startup","Manual Docker Compose Startup",[14,544,545,546,181],{},"Use this only when you do not want to use ",[108,547,440],{},[101,549,551],{"className":103,"code":550,"language":105,"meta":106,"style":106},"mkdir -p data\u002Fprojects data\u002Fuploads data\u002Fuploads\u002Ftus data\u002Ftmp data\u002Flogs data\u002Frefdb data\u002Fbuiltin_db data\u002Fpostgres\nmkdir -p data\u002Frefdb\u002Fsonicparanoid2\ndocker compose up -d postgres redis\ndocker compose run --rm backend alembic upgrade head\ndocker compose up -d\n",[108,552,553,585,594,612,636],{"__ignoreMap":106},[111,554,555,558,561,564,567,570,573,576,579,582],{"class":113,"line":114},[111,556,557],{"class":117},"mkdir",[111,559,560],{"class":145}," -p",[111,562,563],{"class":121}," data\u002Fprojects",[111,565,566],{"class":121}," data\u002Fuploads",[111,568,569],{"class":121}," data\u002Fuploads\u002Ftus",[111,571,572],{"class":121}," data\u002Ftmp",[111,574,575],{"class":121}," data\u002Flogs",[111,577,578],{"class":121}," data\u002Frefdb",[111,580,581],{"class":121}," data\u002Fbuiltin_db",[111,583,584],{"class":121}," data\u002Fpostgres\n",[111,586,587,589,591],{"class":113,"line":142},[111,588,557],{"class":117},[111,590,560],{"class":145},[111,592,593],{"class":121}," data\u002Frefdb\u002Fsonicparanoid2\n",[111,595,596,598,600,603,606,609],{"class":113,"line":221},[111,597,532],{"class":117},[111,599,535],{"class":121},[111,601,602],{"class":121}," up",[111,604,605],{"class":145}," -d",[111,607,608],{"class":121}," postgres",[111,610,611],{"class":121}," redis\n",[111,613,614,616,618,621,624,627,630,633],{"class":113,"line":227},[111,615,532],{"class":117},[111,617,535],{"class":121},[111,619,620],{"class":121}," run",[111,622,623],{"class":145}," --rm",[111,625,626],{"class":121}," backend",[111,628,629],{"class":121}," alembic",[111,631,632],{"class":121}," upgrade",[111,634,635],{"class":121}," head\n",[111,637,638,640,642,644],{"class":113,"line":233},[111,639,532],{"class":117},[111,641,535],{"class":121},[111,643,602],{"class":121},[111,645,646],{"class":145}," -d\n",[18,648,650],{"id":649},"administrator-account","Administrator Account",[14,652,653],{},"You need one administrator account to manage users, settings, workers, project cleanup, and gallery projects.",[93,655,657],{"id":656},"private-deployment","Private Deployment",[14,659,660],{},"For a trusted local or intranet deployment, you can let the first registered user become the administrator.",[14,662,663],{},"Set this before the first registration:",[101,665,666],{"className":203,"code":306,"language":205,"meta":106,"style":106},[108,667,668],{"__ignoreMap":106},[111,669,670],{"class":113,"line":114},[111,671,306],{},[14,673,674,675,678],{},"Start the services, open the website, and register the first account. After the administrator account is created, set it back to ",[108,676,677],{},"false"," and restart the backend:",[101,680,682],{"className":203,"code":681,"language":205,"meta":106,"style":106},"FIRST_REGISTERED_USER_AS_ADMIN=false\n",[108,683,684],{"__ignoreMap":106},[111,685,686],{"class":113,"line":114},[111,687,681],{},[101,689,691],{"className":103,"code":690,"language":105,"meta":106,"style":106},"docker compose restart backend\n",[108,692,693],{"__ignoreMap":106},[111,694,695,697,699,702],{"class":113,"line":114},[111,696,532],{"class":117},[111,698,535],{"class":121},[111,700,701],{"class":121}," restart",[111,703,704],{"class":121}," backend\n",[93,706,708],{"id":707},"public-deployment","Public Deployment",[14,710,711],{},"For a public deployment, create the administrator with the backend CLI:",[101,713,715],{"className":103,"code":714,"language":105,"meta":106,"style":106},"docker compose exec backend \\\n  env ORTHOVENN_ADMIN_PASSWORD='your-strong-password' \\\n  python -m app.cli create-admin \\\n  --username admin \\\n  --email admin@example.com\n",[108,716,717,731,741,757,767],{"__ignoreMap":106},[111,718,719,721,723,726,728],{"class":113,"line":114},[111,720,532],{"class":117},[111,722,535],{"class":121},[111,724,725],{"class":121}," exec",[111,727,626],{"class":121},[111,729,730],{"class":145}," \\\n",[111,732,733,736,739],{"class":113,"line":142},[111,734,735],{"class":121},"  env",[111,737,738],{"class":121}," ORTHOVENN_ADMIN_PASSWORD='your-strong-password'",[111,740,730],{"class":145},[111,742,743,746,749,752,755],{"class":113,"line":221},[111,744,745],{"class":121},"  python",[111,747,748],{"class":145}," -m",[111,750,751],{"class":121}," app.cli",[111,753,754],{"class":121}," create-admin",[111,756,730],{"class":145},[111,758,759,762,765],{"class":113,"line":227},[111,760,761],{"class":145},"  --username",[111,763,764],{"class":121}," admin",[111,766,730],{"class":145},[111,768,769,772],{"class":113,"line":233},[111,770,771],{"class":145},"  --email",[111,773,774],{"class":121}," admin@example.com\n",[14,776,777],{},"To promote an existing user:",[101,779,781],{"className":103,"code":780,"language":105,"meta":106,"style":106},"docker compose exec backend \\\n  env ORTHOVENN_ADMIN_PASSWORD='your-strong-password' \\\n  python -m app.cli create-admin \\\n  --username existing-user \\\n  --email existing@example.com \\\n  --promote-existing\n",[108,782,783,795,803,815,824,833],{"__ignoreMap":106},[111,784,785,787,789,791,793],{"class":113,"line":114},[111,786,532],{"class":117},[111,788,535],{"class":121},[111,790,725],{"class":121},[111,792,626],{"class":121},[111,794,730],{"class":145},[111,796,797,799,801],{"class":113,"line":142},[111,798,735],{"class":121},[111,800,738],{"class":121},[111,802,730],{"class":145},[111,804,805,807,809,811,813],{"class":113,"line":221},[111,806,745],{"class":121},[111,808,748],{"class":145},[111,810,751],{"class":121},[111,812,754],{"class":121},[111,814,730],{"class":145},[111,816,817,819,822],{"class":113,"line":227},[111,818,761],{"class":145},[111,820,821],{"class":121}," existing-user",[111,823,730],{"class":145},[111,825,826,828,831],{"class":113,"line":233},[111,827,771],{"class":145},[111,829,830],{"class":121}," existing@example.com",[111,832,730],{"class":145},[111,834,835],{"class":113,"line":239},[111,836,837],{"class":145},"  --promote-existing\n",[18,839,841],{"id":840},"required-settings","Required Settings",[14,843,844],{},"Most deployments only need to review these settings:",[45,846,847,857],{},[48,848,849],{},[51,850,851,854],{},[54,852,853],{},"Area",[54,855,856],{},"Setting",[61,858,859,882,896,915,931,947],{},[51,860,861,864],{},[66,862,863],{},"Ports",[66,865,866,869,870,869,873,869,876,869,879],{},[108,867,868],{},"API_PORT",", ",[108,871,872],{},"NGINX_PORT",[108,874,875],{},"TUSD_PORT",[108,877,878],{},"POSTGRES_PORT",[108,880,881],{},"REDIS_PORT",[51,883,884,887],{},[66,885,886],{},"Security",[66,888,889,892,893],{},[108,890,891],{},"SECRET_KEY",", administrator password, ",[108,894,895],{},"FIRST_REGISTERED_USER_AS_ADMIN",[51,897,898,901],{},[66,899,900],{},"Email",[66,902,903,869,906,869,909,869,912],{},[108,904,905],{},"MAIL_ENABLED",[108,907,908],{},"MAIL_SMTP_HOST",[108,910,911],{},"MAIL_SMTP_USERNAME",[108,913,914],{},"MAIL_SMTP_PASSWORD",[51,916,917,920],{},[66,918,919],{},"Upload",[66,921,922,869,925,869,928],{},[108,923,924],{},"UPLOAD_TRANSPORT",[108,926,927],{},"UPLOAD_MAX_FILE_SIZE",[108,929,930],{},"PROJECT_SPECIES_LIMIT",[51,932,933,936],{},[66,934,935],{},"Workers",[66,937,938,869,941,869,944],{},[108,939,940],{},"CELERY_CONCURRENCY",[108,942,943],{},"BLAST_WORKER_CONCURRENCY",[108,945,946],{},"MODULE_DEFAULT_THREADS",[51,948,949,952],{},[66,950,951],{},"Cleanup",[66,953,954,957],{},[108,955,956],{},"PROJECT_CLEANUP_SCHEDULER_ENABLED"," and cleanup schedule variables",[14,959,960,961,963],{},"Email verification login and password reset require SMTP. For 163 Mail, use the\nSMTP authorization code as ",[108,962,914],{},"; do not use the web login\npassword.",[14,965,966],{},"Per-user project limits and project retention days are managed after login:",[101,968,971],{"className":969,"code":970,"language":157,"meta":106},[155],"Admin -> Users\n",[108,972,970],{"__ignoreMap":106},[14,974,975],{},"Reference databases are expected in the deployment package:",[45,977,978,988],{},[48,979,980],{},[51,981,982,985],{},[54,983,984],{},"Host Directory",[54,986,987],{},"Purpose",[61,989,990,999,1009],{},[51,991,992,996],{},[66,993,994],{},[108,995,165],{},[66,997,998],{},"GO, UniProt, DIAMOND annotation, and other reference files",[51,1000,1001,1006],{},[66,1002,1003],{},[108,1004,1005],{},"data\u002Frefdb\u002Fsonicparanoid2",[66,1007,1008],{},"SonicParanoid2 optional resources from the deployment package",[51,1010,1011,1016],{},[66,1012,1013],{},[108,1014,1015],{},"data\u002Fbuiltin_db",[66,1017,1018],{},"Built-in species database, created or mounted when used",[18,1020,429],{"id":1021},"optional-sonicparanoid2-pfam-profile-db",[14,1023,1024,1025,1028],{},"SonicParanoid2 uses ",[108,1026,1027],{},"graph-only"," mode by default and does not need the Pfam profile database. Install the Pfam MMseqs profile database only if you plan to disable graph-only mode and run the full architecture\u002Fdomain workflow.",[14,1030,1031],{},"Check the current status from the deployment directory:",[101,1033,1035],{"className":103,"code":1034,"language":105,"meta":106,"style":106},".\u002Finstall_sonic_pfam_profiles.sh status\n",[108,1036,1037],{"__ignoreMap":106},[111,1038,1039,1042],{"class":113,"line":114},[111,1040,1041],{"class":117},".\u002Finstall_sonic_pfam_profiles.sh",[111,1043,1044],{"class":121}," status\n",[14,1046,1047],{},"The script only uses these paths:",[101,1049,1052],{"className":1050,"code":1051,"language":157,"meta":106},[155],"data\u002Frefdb\u002Fsonicparanoid2\u002Fdownloads\u002F\ndata\u002Frefdb\u002Fsonicparanoid2\u002Fpfam_profile_db\u002F\n",[108,1053,1051],{"__ignoreMap":106},[14,1055,1056],{},"The recommended path is manual download first, then local install.",[14,1058,1059],{},"Manual download address:",[101,1061,1064],{"className":1062,"code":1063,"language":157,"meta":106},[155],"https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1eV3t2FINOUPJI1132w3bmBrHnO3_bpfJ\u002Fview?usp=sharing\n",[108,1065,1063],{"__ignoreMap":106},[14,1067,1068],{},"Save the archive as:",[101,1070,1073],{"className":1071,"code":1072,"language":157,"meta":106},[155],"data\u002Frefdb\u002Fsonicparanoid2\u002Fdownloads\u002Fsonicparanoid2_pfam_mmseqs_profile_db.tar.gz\n",[108,1074,1072],{"__ignoreMap":106},[14,1076,1077],{},"Then verify and install:",[101,1079,1081],{"className":103,"code":1080,"language":105,"meta":106,"style":106},"mkdir -p data\u002Frefdb\u002Fsonicparanoid2\u002Fdownloads\ntar -tzf data\u002Frefdb\u002Fsonicparanoid2\u002Fdownloads\u002Fsonicparanoid2_pfam_mmseqs_profile_db.tar.gz >\u002Fdev\u002Fnull\n.\u002Finstall_sonic_pfam_profiles.sh install\n",[108,1082,1083,1092,1109],{"__ignoreMap":106},[111,1084,1085,1087,1089],{"class":113,"line":114},[111,1086,557],{"class":117},[111,1088,560],{"class":145},[111,1090,1091],{"class":121}," data\u002Frefdb\u002Fsonicparanoid2\u002Fdownloads\n",[111,1093,1094,1097,1100,1103,1106],{"class":113,"line":142},[111,1095,1096],{"class":117},"tar",[111,1098,1099],{"class":145}," -tzf",[111,1101,1102],{"class":121}," data\u002Frefdb\u002Fsonicparanoid2\u002Fdownloads\u002Fsonicparanoid2_pfam_mmseqs_profile_db.tar.gz",[111,1104,1105],{"class":125}," >",[111,1107,1108],{"class":121},"\u002Fdev\u002Fnull\n",[111,1110,1111,1113],{"class":113,"line":221},[111,1112,1041],{"class":117},[111,1114,1115],{"class":121}," install\n",[14,1117,1118],{},"If the archive was downloaded to another location:",[101,1120,1122],{"className":103,"code":1121,"language":105,"meta":106,"style":106},".\u002Finstall_sonic_pfam_profiles.sh install \u002Fpath\u002Fto\u002Fsonicparanoid2_pfam_mmseqs_profile_db.tar.gz\n",[108,1123,1124],{"__ignoreMap":106},[111,1125,1126,1128,1131],{"class":113,"line":114},[111,1127,1041],{"class":117},[111,1129,1130],{"class":121}," install",[111,1132,1133],{"class":121}," \u002Fpath\u002Fto\u002Fsonicparanoid2_pfam_mmseqs_profile_db.tar.gz\n",[14,1135,1136],{},"If the server can access Google Drive directly, you can try downloading with curl:",[101,1138,1140],{"className":103,"code":1139,"language":105,"meta":106,"style":106},"mkdir -p data\u002Frefdb\u002Fsonicparanoid2\u002Fdownloads\ncurl -L \\\n  'https:\u002F\u002Fdrive.google.com\u002Fuc?id=1eV3t2FINOUPJI1132w3bmBrHnO3_bpfJ' \\\n  -o data\u002Frefdb\u002Fsonicparanoid2\u002Fdownloads\u002Fsonicparanoid2_pfam_mmseqs_profile_db.tar.gz\n.\u002Finstall_sonic_pfam_profiles.sh install\n",[108,1141,1142,1150,1160,1167,1175],{"__ignoreMap":106},[111,1143,1144,1146,1148],{"class":113,"line":114},[111,1145,557],{"class":117},[111,1147,560],{"class":145},[111,1149,1091],{"class":121},[111,1151,1152,1155,1158],{"class":113,"line":142},[111,1153,1154],{"class":117},"curl",[111,1156,1157],{"class":145}," -L",[111,1159,730],{"class":145},[111,1161,1162,1165],{"class":113,"line":221},[111,1163,1164],{"class":121},"  'https:\u002F\u002Fdrive.google.com\u002Fuc?id=1eV3t2FINOUPJI1132w3bmBrHnO3_bpfJ'",[111,1166,730],{"class":145},[111,1168,1169,1172],{"class":113,"line":227},[111,1170,1171],{"class":145},"  -o",[111,1173,1174],{"class":121}," data\u002Frefdb\u002Fsonicparanoid2\u002Fdownloads\u002Fsonicparanoid2_pfam_mmseqs_profile_db.tar.gz\n",[111,1176,1177,1179],{"class":113,"line":233},[111,1178,1041],{"class":117},[111,1180,1115],{"class":121},[14,1182,1183],{},"If graph-only mode is disabled but the profile database is missing, the SonicParanoid2 task will stop early and report the missing profile database path.",[18,1185,1187],{"id":1186},"verify-installation","Verify Installation",[14,1189,1190],{},"After logging in as administrator:",[1192,1193,1194,1202,1208,1214],"ol",{},[29,1195,1196,1197,1201],{},"Open ",[1198,1199,1200],"strong",{},"Admin"," from the user menu.",[29,1203,1204,1205,1207],{},"Check ",[1198,1206,935],{}," and confirm the main workflow worker is visible.",[29,1209,1204,1210,1213],{},[1198,1211,1212],{},"Settings"," for upload size, species limit, cleanup schedule, and thread defaults.",[29,1215,1216],{},"Create a small test project and confirm the progress page updates module logs.",[14,1218,1219],{},"Useful log commands:",[101,1221,1223],{"className":103,"code":1222,"language":105,"meta":106,"style":106},"docker compose logs -f backend\ndocker compose logs -f celery_worker\ndocker compose logs -f blast_worker\n",[108,1224,1225,1239,1252],{"__ignoreMap":106},[111,1226,1227,1229,1231,1234,1237],{"class":113,"line":114},[111,1228,532],{"class":117},[111,1230,535],{"class":121},[111,1232,1233],{"class":121}," logs",[111,1235,1236],{"class":145}," -f",[111,1238,704],{"class":121},[111,1240,1241,1243,1245,1247,1249],{"class":113,"line":142},[111,1242,532],{"class":117},[111,1244,535],{"class":121},[111,1246,1233],{"class":121},[111,1248,1236],{"class":145},[111,1250,1251],{"class":121}," celery_worker\n",[111,1253,1254,1256,1258,1260,1262],{"class":113,"line":221},[111,1255,532],{"class":117},[111,1257,535],{"class":121},[111,1259,1233],{"class":121},[111,1261,1236],{"class":145},[111,1263,1264],{"class":121}," blast_worker\n",[1266,1267,1268],"style",{},"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 .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 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}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":106,"searchDepth":142,"depth":142,"links":1270},[1271,1272,1280,1284,1285,1286],{"id":20,"depth":142,"text":21},{"id":90,"depth":142,"text":91,"children":1273},[1274,1275,1276,1277,1278,1279],{"id":95,"depth":221,"text":96},{"id":169,"depth":221,"text":170},{"id":367,"depth":221,"text":368},{"id":433,"depth":221,"text":434},{"id":509,"depth":221,"text":510},{"id":541,"depth":221,"text":542},{"id":649,"depth":142,"text":650,"children":1281},[1282,1283],{"id":656,"depth":221,"text":657},{"id":707,"depth":221,"text":708},{"id":840,"depth":142,"text":841},{"id":1021,"depth":142,"text":429},{"id":1186,"depth":142,"text":1187},"Install OrthoVennPlus with run.sh or Docker Compose, create the first administrator account, and verify the deployment.","md",{},{"title":1291,"order":114},"Installation","\u002Finstall",{"title":5,"description":1287},"install\u002Findex","GMawPcG4VjHWtwXuxyCrg3_ZIsROImaZxsJiBzkh8y0",1780997605416]