]> git.proxmox.com Git - pve-docs.git/blame - pveproxy.adoc
pveproxy: add note about bindv6only sysctl
[pve-docs.git] / pveproxy.adoc
CommitLineData
96f2beeb 1ifdef::manvolnum[]
f1587b9e
DM
2pveproxy(8)
3===========
5377af6a 4:pve-toplevel:
96f2beeb
DM
5
6NAME
7----
8
9pveproxy - PVE API Proxy Daemon
10
11
49a5e11c 12SYNOPSIS
96f2beeb
DM
13--------
14
15include::pveproxy.8-synopsis.adoc[]
16
17DESCRIPTION
18-----------
19endif::manvolnum[]
20
21ifndef::manvolnum[]
e8b392d3
FG
22pveproxy - Proxmox VE API Proxy Daemon
23======================================
96f2beeb
DM
24endif::manvolnum[]
25
26This daemon exposes the whole {pve} API on TCP port 8006 using
8c1189b6 27HTTPS. It runs as user `www-data` and has very limited permissions.
96f2beeb 28Operation requiring more permissions are forwarded to the local
8c1189b6 29`pvedaemon`.
96f2beeb 30
eb641429
DM
31Requests targeted for other nodes are automatically forwarded to those
32nodes. This means that you can manage your whole cluster by connecting
96f2beeb
DM
33to a single {pve} node.
34
eb641429
DM
35Host based Access Control
36-------------------------
37
8c1189b6
FG
38It is possible to configure ``apache2''-like access control
39lists. Values are read from file `/etc/default/pveproxy`. For example:
eb641429
DM
40
41----
42ALLOW_FROM="10.0.0.1-10.0.0.5,192.168.0.0/22"
43DENY_FROM="all"
44POLICY="allow"
45----
46
47IP addresses can be specified using any syntax understood by `Net::IP`. The
8c1189b6 48name `all` is an alias for `0/0`.
eb641429 49
8c1189b6 50The default policy is `allow`.
eb641429
DM
51
52[width="100%",options="header"]
53|===========================================================
54| Match | POLICY=deny | POLICY=allow
55| Match Allow only | allow | allow
56| Match Deny only | deny | deny
57| No match | deny | allow
58| Match Both Allow & Deny | deny | allow
59|===========================================================
60
61
fa25e615
SI
62Listening IP
63------------
64
2a057d73
SI
65By default the `pveproxy` and `spiceproxy` daemons listen on the wildcard
66address and accept connections from both IPv4 and IPv6 clients.
67
fa25e615 68By setting `LISTEN_IP` in `/etc/default/pveproxy` you can control to which IP
a22c19c3
TL
69address the `pveproxy` and `spiceproxy` daemons bind. The IP-address needs to
70be configured on the system.
fa25e615
SI
71
72This can be used to listen only to an internal interface and thus have less
73exposure to the public internet:
74
a3b4a546
TL
75----
76LISTEN_IP="192.0.2.1"
77----
fa25e615 78
a3b4a546 79Similarly, you can also set an IPv6 address:
fa25e615 80
a3b4a546
TL
81----
82LISTEN_IP="2001:db8:85a3::1"
83----
8fd3f59f
TL
84
85Note that if you want to specify a link-local IPv6 address, you need to provide
86the interface name itself. For example:
87
88----
89LISTEN_IP="fe80::c463:8cff:feb9:6a4e%vmbr0"
90----
fa25e615 91
a22c19c3
TL
92WARNING: The nodes in a cluster need access to `pveproxy` for communication,
93possibly on different sub-nets. It is **not recommended** to set `LISTEN_IP` on
94clustered systems.
fa25e615 95
169a0fc1
TL
96To apply the change you need to either reboot your node or fully restart the
97`pveproxy` and `spiceproxy` service:
98
99----
100systemctl restart pveproxy.service spiceproxy.service
101----
102
103NOTE: Unlike `reload`, a `restart` of the pveproxy service can interrupt some
104long-running worker processes, for example a running console or shell from a
105virtual guest. So, please use a maintenance window to bring this change in
106effect.
107
2a057d73
SI
108NOTE: setting the `sysctl` `net.ipv6.bindv6only` to `1` will cause the daemons
109 to only accept connection from IPv6 clients. This non-default setting usually
110 also causes other issues. Either remove the `sysctl` setting, or set the
111 `LISTEN_IP` to `0.0.0.0` (which will only allow IPv4 clients).
112
113
eb641429
DM
114SSL Cipher Suite
115----------------
116
8c1189b6 117You can define the cipher list in `/etc/default/pveproxy`, for example
eb641429 118
ee0fb57b 119 CIPHERS="ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256"
eb641429
DM
120
121Above is the default. See the ciphers(1) man page from the openssl
122package for a list of all available options.
123
3a433e9b 124Additionally, you can set the client to choose the cipher used in
54de4e32
SI
125`/etc/default/pveproxy` (default is the first cipher in the list available to
126both client and `pveproxy`):
127
128 HONOR_CIPHER_ORDER=0
129
eb641429
DM
130
131Diffie-Hellman Parameters
132-------------------------
133
134You can define the used Diffie-Hellman parameters in
8c1189b6 135`/etc/default/pveproxy` by setting `DHPARAMS` to the path of a file
eb641429
DM
136containing DH parameters in PEM format, for example
137
138 DHPARAMS="/path/to/dhparams.pem"
139
8c1189b6 140If this option is not set, the built-in `skip2048` parameters will be
eb641429
DM
141used.
142
143NOTE: DH parameters are only used if a cipher suite utilizing the DH key
144exchange algorithm is negotiated.
145
98a741e0
FG
146Alternative HTTPS certificate
147-----------------------------
148
0e9c6c13 149You can change the certificate used to an external one or to one obtained via
aeecd9ea
SI
150ACME.
151
152pveproxy uses `/etc/pve/local/pveproxy-ssl.pem` and
153`/etc/pve/local/pveproxy-ssl.key`, if present, and falls back to
154`/etc/pve/local/pve-ssl.pem` and `/etc/pve/local/pve-ssl.key`.
155The private key may not use a passphrase.
156
157See the Host System Administration chapter of the documentation for details.
9b75a03a 158
54de4e32
SI
159COMPRESSION
160-----------
161
162By default `pveproxy` uses gzip HTTP-level compression for compressible
163content, if the client supports it. This can disabled in `/etc/default/pveproxy`
164
165 COMPRESSION=0
166
96f2beeb
DM
167ifdef::manvolnum[]
168include::pve-copyright.adoc[]
169endif::manvolnum[]