Girish Ramakrishnan
8c4c1e5471
run addons as readonly
2015-10-08 11:07:28 -07:00
Girish Ramakrishnan
dd6891efcb
update mail image
2015-10-08 11:06:29 -07:00
Girish Ramakrishnan
8213f5e311
mongodb: readonly rootfs
2015-10-08 10:24:15 -07:00
Girish Ramakrishnan
ed3f22a6ff
mysql: readonly rootfs
2015-10-08 09:43:05 -07:00
Girish Ramakrishnan
15592bf6d1
postgresql: readonly rootfs
2015-10-08 09:20:25 -07:00
Girish Ramakrishnan
dbde03de14
redis: use readonly rootfs
2015-10-08 09:00:43 -07:00
Girish Ramakrishnan
3b2cf8fa79
new base image 0.4.0
2015-09-28 19:33:58 -07:00
Girish Ramakrishnan
924011e411
Add custom apparmor profile for cloudron apps
...
Docker generates an apparmor profile on the fly under /etc/apparmor.d/docker.
This profile gets overwritten on every docker daemon start.
This profile allows processes to ptrace themselves. This is required by
circus (python process manager) for reasons unknown to me. It floods the logs
with
audit[7623]: <audit-1400> apparmor="DENIED" operation="ptrace" profile="docker-default" pid=7623 comm="python3.4" requested_mask="trace" denied_mask="trace" peer="docker-default"
This is easily tested using:
docker run -it cloudron/base:0.3.3 /bin/bash
a) now do ps
b) journalctl should show error log as above
docker run --security-opt=apparmor:docker-cloudron-app -it cloudron/base:0.3.3 /bin/bash
a) now do ps
b) no error!
Note that despite this, the process may not have ability to ptrace since it does not
have CAP_PTRACE. Also, security-opt is the profile name (inside the apparmor config file)
and not the filename.
References:
https://groups.google.com/forum/#!topic/docker-user/xvxpaceTCyw
https://github.com/docker/docker/issues/7276
https://bugs.launchpad.net/ubuntu/+source/docker.io/+bug/1320869
This is an infra update because we need to recreate containers to get the right profile.
Fixes #492
2015-09-21 11:01:44 -07:00
Girish Ramakrishnan
ad71662bf8
timezone is already determined automatically using activation
2015-09-18 12:02:36 -07:00
Girish Ramakrishnan
ddde1f5a41
store timezone in config.js (part of provision data)
2015-09-16 15:54:56 -07:00
Girish Ramakrishnan
92e8af2434
Get oauth proxy port from the configs
2015-09-16 10:06:34 -07:00
Girish Ramakrishnan
d12af89e2e
set memory limits for addons
...
mysql, postgresql, mongodb - 100m each
mail, graphite, redis (each instance) - 75m
For reference, in yellowtent:
mongo - 5m
postgresql - 33m
mysql - 3.5m
mail: 26m
graphite - 26m
redis - 32m
2015-09-14 13:47:45 -07:00
Girish Ramakrishnan
c41cacd5e9
remove oauthproxy systemd configs
2015-09-14 12:02:38 -07:00
Girish Ramakrishnan
5eb7a0b64f
Merge apphealthtask into box server
...
We used to run this as a separate process but no amount of node/v8 tweaking
makes them run as standalone with 50M RSS.
Three solutions were considered for the memory issue:
1. Use systemd timer. apphealthtask needs to run quiet frequently (10 sec)
for the ui to get the app health update immediately after install.
2. Merge into box server (this commit)
3. Increase memory to 80M. This seems to make apphealthtask run as-is.
2015-09-14 10:52:11 -07:00
Girish Ramakrishnan
22718cfb02
Rename app.js to box.js
2015-09-14 10:43:47 -07:00
Girish Ramakrishnan
2ec6c4ec77
make janitor a systemd timer
...
one process lesser
2015-09-11 18:43:51 -07:00
Girish Ramakrishnan
a1ddad7b7a
limit node memory usage
...
node needs to be told how much space it can usage, otherwise it keeps
allocating and we cannot keep it under 50M. keeping old space to 30M,
lets the memory hover around 40M
there are many options to v8 but I haven't explored them all:
--expose_gc - allows scripts to call gc()
--max_old_space_size=30 --max_semi_space_size=2048 (old/new space)
node first allocates new objects in new space. if these objects are in use
around for some time, it moves them to old space. the idea here is that it
runs gc aggressively on new space since new objects die more than old ones.
the new space is split into two halves of equal size called semi spaces.
--gc_interval=100 --optimize_for_size --max_executable_size=5 --gc_global --stack_size=1024
http://erikcorry.blogspot.com/2012/11/memory-management-flags-in-v8.html
http://jayconrod.com/posts/55/a-tour-of-v8-garbage-collection
https://code.google.com/p/chromium/issues/detail?id=280984
http://stackoverflow.com/questions/30252905/nodejs-decrease-v8-garbage-collector-memory-usage
http://www.appfruits.com/2014/08/running-node-js-on-arduino-yun/
note: this is not part of shebang because linux shebang does not support args! so we cannot
pass node args as part of shebang.
2015-09-10 21:24:36 -07:00
Girish Ramakrishnan
d5b787b7f0
set memorylimit for crashnotifier as well
2015-09-10 14:19:44 -07:00
Girish Ramakrishnan
a5e4d3cc86
systemd: fix crashnotifier
2015-09-07 21:40:01 -07:00
Girish Ramakrishnan
a259f97049
systemd: pass the instance name as argument
2015-09-07 21:16:22 -07:00
Girish Ramakrishnan
b5a51852d0
systemd: just wait for 5 seconds for box to die
2015-09-07 20:58:14 -07:00
Girish Ramakrishnan
6db422710e
systemd: do not restart crashnotifier
2015-09-07 20:54:58 -07:00
Girish Ramakrishnan
837860d138
200m is a more sane memory limit
2015-09-07 20:48:29 -07:00
Girish Ramakrishnan
d045ab2ec4
systemd: fix config files
2015-09-07 20:46:32 -07:00
Girish Ramakrishnan
a596f2f385
systemd: Fix crashnotifier
2015-09-07 20:14:37 -07:00
Girish Ramakrishnan
43336d43db
Add memory limits on services
2015-09-07 19:16:34 -07:00
Girish Ramakrishnan
03325bfb0d
Move from supervisor to systemd
...
This removes logrotate as well since we use systemd logging
2015-09-07 14:31:25 -07:00
Johannes Zellner
bdf221eb43
Revert "Add hack for broken app backup tarballs"
...
This reverts commit 9723951bfc .
2015-08-31 21:44:24 -07:00
Girish Ramakrishnan
9723951bfc
Add hack for broken app backup tarballs
2015-08-31 18:58:38 -07:00
Girish Ramakrishnan
6743dcf49f
Pass along aws config for updates
2015-08-27 22:45:04 -07:00
Girish Ramakrishnan
78e29004a5
Add missing quotes to cloudron.conf
2015-08-27 20:15:04 -07:00
Johannes Zellner
e597dae360
use backupKey from userData
2015-08-25 18:44:52 -07:00
Johannes Zellner
1c5170fcea
Support optional aws related userData
2015-08-25 17:52:01 -07:00
Girish Ramakrishnan
ce9566a72e
Rebase addons to use base image 0.3.3
2015-08-24 10:19:18 -07:00
Girish Ramakrishnan
58a0e8ecf8
Base image is now 0.3.3
2015-08-18 15:43:50 -07:00
Girish Ramakrishnan
6cbd0b19d9
Print graphite container id
2015-08-13 15:57:36 -07:00
Girish Ramakrishnan
a09ebc64d1
fix graph issue finally
2015-08-13 15:54:27 -07:00
Girish Ramakrishnan
45f1d340d7
Use latest graphite
2015-08-13 15:53:36 -07:00
Girish Ramakrishnan
ea1b3d68a9
Create symlink in start.sh (and not container setup)
2015-08-13 15:36:21 -07:00
Girish Ramakrishnan
27789eab15
restart mysql in start.sh and not container setup
2015-08-13 15:16:01 -07:00
Girish Ramakrishnan
ed2a2dca73
restart collectd
2015-08-13 15:04:57 -07:00
Girish Ramakrishnan
4a29beafb3
fix graphs again
2015-08-13 15:03:44 -07:00
Girish Ramakrishnan
8a68b35594
Fix typo
...
remove thead_cache_size. it's dynamic anyways
2015-08-13 14:53:05 -07:00
Girish Ramakrishnan
b1c87dfa2a
Revert "Add hack to make graphs work with latest collectd"
...
This reverts commit a959418544 .
2015-08-13 14:42:47 -07:00
Girish Ramakrishnan
32f624bd27
limit threads and max connections
2015-08-13 14:42:36 -07:00
Girish Ramakrishnan
4a9f5a0466
Bump infra version
2015-08-13 14:22:39 -07:00
Girish Ramakrishnan
a959418544
Add hack to make graphs work with latest collectd
...
For some reason df-vda1 is not being collected by carbon. I have tried
all sorts of things and nothing works. This is a hack to get it working.
2015-08-13 13:47:44 -07:00
Girish Ramakrishnan
8bbfcea072
Turn off performance_schema in mysql 5.6
2015-08-13 13:47:44 -07:00
Girish Ramakrishnan
f112293d45
systemd has moved around the cgroup hierarchy
...
https://github.com/docker/docker/issues/9902
There is some rationale here:
https://libvirt.org/cgroups.html
2015-08-13 10:21:33 -07:00
Girish Ramakrishnan
d73295d596
Add warning
2015-08-12 19:52:23 -07:00