pid_t pid = fork();
if (pid == 0) {
fprintf(stderr, "ctdlvisor: executing citserver\n");
- //detach_from_tty();
+ detach_from_tty();
execlp("/usr/local/citadel/citserver", "citserver", "-x9", "-h", CTDL_DIR, NULL);
exit(errno);
}
pid_t pid = fork();
if (pid == 0) {
fprintf(stderr, "ctdlvisor: executing webcit (http)\n");
- //detach_from_tty();
+ detach_from_tty();
execlp("/usr/local/webcit/webcit", "webcit", "-x9", "-p", "80", "uds", CTDL_DIR, NULL);
exit(errno);
}
pid_t pid = fork();
if (pid == 0) {
fprintf(stderr, "ctdlvisor: executing webcit (https)\n");
- //detach_from_tty();
+ detach_from_tty();
execlp("/usr/local/webcit/webcit", "webcit", "-x9", "-s", "-p", "443", "uds", CTDL_DIR, NULL);
exit(errno);
}
who_exited = waitpid(-1, &status, 0);
fprintf(stderr, "ctdlvisor: pid=%d exited, status=%d, exitcode=%d\n", who_exited, status, WEXITSTATUS(status));
- // A *deliberate* exit of citserver will cause ctdlvisor to shut the whole AppImage down.
+ // A *deliberate* exit of citserver will cause ctdlvisor to shut the whole container down.
// If it crashes, however, we will start it back up.
if (who_exited == citserver_pid) {
citserver_exit_code = WEXITSTATUS(status);
if ((WIFEXITED(status)) && (citserver_exit_code == 0)) {
- fprintf(stderr, "ctdlvisor: citserver exited normally - ending AppImage session\n");
+ fprintf(stderr, "ctdlvisor: citserver exited normally - ending container session\n");
shutting_down = 1;
kill(webcit_pid, SIGTERM);
kill(webcits_pid, SIGTERM);
}
else if ((WIFEXITED(status)) && (citserver_exit_code >= 101) && (citserver_exit_code <= 109)) {
- fprintf(stderr, "ctdlvisor: citserver exited intentionally - ending AppImage session\n");
+ fprintf(stderr, "ctdlvisor: citserver exited intentionally - ending container session\n");
shutting_down = 1;
kill(webcit_pid, SIGTERM);
kill(webcits_pid, SIGTERM);
# The container expects a persistent volume called "citadel-data" in which it will keep everything.
# The remainder of the container is ephermal and can be deleted at any time.
-docker run \
+exec docker run \
--name citadel \
-it \
--rm \
- -p 25:25 \
- -p 80:80 \
- -p 110:110 \
- -p 119:119 \
- -p 143:143 \
- -p 443:443 \
- -p 465:465 \
- -p 504:504 \
- -p 563:563 \
- -p 587:587 \
- -p 993:993 \
- -p 995:995 \
- -p 5222:5222 \
+ --network host \
--mount type=bind,source=/root/citadel/citadel,target=/citadel-data \
$*
+
+# Explanation of the above options:
+#
+# --name citadel Create a container named "citadel"
+# -it Run in the foreground
+# --rm Delete the container when it exits
+# --network host Bind directly to the host's network ports instead of creating a separate interface
+# --mount This identifies where on the host our persistent Citadel database is found