feat: add experimental self host setup (#261)

sweep/improve-logging-information
Meng Zhang 2023-06-23 12:13:22 -07:00 committed by GitHub
parent 0265d946d9
commit 8879ed7655
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 59 additions and 3 deletions

View File

@ -11,7 +11,7 @@ pub async fn scheduler(now: bool) -> Result<()> {
let config = Config::load()?; let config = Config::load()?;
let mut scheduler = JobScheduler::new(); let mut scheduler = JobScheduler::new();
let job = || { let job1 = || {
info!("Syncing repositories..."); info!("Syncing repositories...");
let ret = repository::sync_repositories(&config); let ret = repository::sync_repositories(&config);
if let Err(err) = ret { if let Err(err) = ret {
@ -25,7 +25,9 @@ pub async fn scheduler(now: bool) -> Result<()> {
error!("Failed to build dataset, err: '{}'", err); error!("Failed to build dataset, err: '{}'", err);
return; return;
} }
};
let job2 = || {
info!("Indexing repositories..."); info!("Indexing repositories...");
let ret = index::index_repositories(&config); let ret = index::index_repositories(&config);
if let Err(err) = ret { if let Err(err) = ret {
@ -34,10 +36,14 @@ pub async fn scheduler(now: bool) -> Result<()> {
}; };
if now { if now {
job(); job1();
job2();
} else { } else {
// Every 5 minutes.
scheduler.add(Job::new("0 1/5 * * * * *".parse().unwrap(), job1));
// Every 5 hours. // Every 5 hours.
scheduler.add(Job::new("0 0 1/5 * * * *".parse().unwrap(), job)); scheduler.add(Job::new("0 0 1/5 * * * *".parse().unwrap(), job2));
info!("Scheduler activated..."); info!("Scheduler activated...");
loop { loop {

11
experimental/Caddyfile Normal file
View File

@ -0,0 +1,11 @@
http://*:8080 {
handle_path /repos* {
reverse_proxy klaus:8080 {
header_up X-Script-Name "/repos"
}
}
handle_path /* {
reverse_proxy tabby:8080
}
}

View File

@ -0,0 +1,39 @@
version: '3.5'
services:
web:
image: caddy
volumes:
- "./Caddyfile:/etc/caddy/Caddyfile:ro"
ports:
- 8080:8080
tabby:
restart: always
image: tabbyml/tabby
platform: linux/amd64
command: serve --model TabbyML/T5P-220M
environment:
TABBY_ROOT: /data
volumes:
- "$HOME/.tabby:/data"
scheduler:
restart: always
image: tabbyml/tabby
platform: linux/amd64
command: scheduler
environment:
TABBY_ROOT: /data
volumes:
- "$HOME/.tabby:/data"
klaus:
image: jonashaag/klaus
environment:
KLAUS_REPOS_ROOT: /repos
KLAUS_SITE_NAME: tabby
command: |
sh -c 'git config --global --add safe.directory "*" && pip install gunicorn && gunicorn klaus.contrib.wsgi_autoreload -b 0.0.0.0:8080'
volumes:
- "$HOME/.tabby/repositories:/repos:ro"