]> git.proxmox.com Git - pve-docs.git/blame - pveproxy.adoc
vzdump: drop overly scary & outdated warning about fleecing
[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
203262f4
TL
26This daemon exposes the whole {pve} API on TCP port 8006 using HTTPS. It runs
27as user `www-data` and has very limited permissions. Operation requiring more
28permissions are forwarded to the local `pvedaemon`.
96f2beeb 29
203262f4
TL
30Requests targeted for other nodes are automatically forwarded to those nodes.
31This means that you can manage your whole cluster by connecting to a single
32{pve} node.
96f2beeb 33
203262f4 34[[pveproxy_host_acls]]
eb641429
DM
35Host based Access Control
36-------------------------
37
203262f4
TL
38It is possible to configure ``apache2''-like access control lists. Values are
39read 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
41a88ff3
SI
48name `all` is an alias for `0/0` and `::/0` (meaning all IPv4 and IPv6
49addresses).
eb641429 50
8c1189b6 51The default policy is `allow`.
eb641429
DM
52
53[width="100%",options="header"]
54|===========================================================
55| Match | POLICY=deny | POLICY=allow
56| Match Allow only | allow | allow
57| Match Deny only | deny | deny
58| No match | deny | allow
59| Match Both Allow & Deny | deny | allow
60|===========================================================
61
203262f4
TL
62[[pveproxy_listening_address]]
63Listening IP Address
64--------------------
fa25e615 65
2a057d73
SI
66By default the `pveproxy` and `spiceproxy` daemons listen on the wildcard
67address and accept connections from both IPv4 and IPv6 clients.
68
8569bf94 69
fa25e615 70By setting `LISTEN_IP` in `/etc/default/pveproxy` you can control to which IP
a22c19c3
TL
71address the `pveproxy` and `spiceproxy` daemons bind. The IP-address needs to
72be configured on the system.
fa25e615 73
8569bf94
TL
74Setting the `sysctl` `net.ipv6.bindv6only` to the non-default `1` will cause
75the daemons to only accept connection from IPv6 clients, while usually also
76causing lots of other issues. If you set this configuration we recommend to
77either remove the `sysctl` setting, or set the `LISTEN_IP` to `0.0.0.0` (which
78will only allow IPv4 clients).
79
80`LISTEN_IP` can be used to only to restricting the socket to an internal
81interface and thus have less exposure to the public internet, for example:
fa25e615 82
a3b4a546
TL
83----
84LISTEN_IP="192.0.2.1"
85----
fa25e615 86
a3b4a546 87Similarly, you can also set an IPv6 address:
fa25e615 88
a3b4a546
TL
89----
90LISTEN_IP="2001:db8:85a3::1"
91----
8fd3f59f
TL
92
93Note that if you want to specify a link-local IPv6 address, you need to provide
94the interface name itself. For example:
95
96----
97LISTEN_IP="fe80::c463:8cff:feb9:6a4e%vmbr0"
98----
fa25e615 99
a22c19c3
TL
100WARNING: The nodes in a cluster need access to `pveproxy` for communication,
101possibly on different sub-nets. It is **not recommended** to set `LISTEN_IP` on
102clustered systems.
fa25e615 103
169a0fc1
TL
104To apply the change you need to either reboot your node or fully restart the
105`pveproxy` and `spiceproxy` service:
106
107----
108systemctl restart pveproxy.service spiceproxy.service
109----
110
111NOTE: Unlike `reload`, a `restart` of the pveproxy service can interrupt some
112long-running worker processes, for example a running console or shell from a
113virtual guest. So, please use a maintenance window to bring this change in
114effect.
115
2a057d73 116
eb641429
DM
117SSL Cipher Suite
118----------------
119
e683b1d8
FG
120You can define the cipher list in `/etc/default/pveproxy` via the `CIPHERS`
121(TLS <= 1.2) and `CIPHERSUITES` (TLS >= 1.3) keys. For example
eb641429 122
ee0fb57b 123 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"
e683b1d8 124 CIPHERSUITES="TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256"
eb641429
DM
125
126Above is the default. See the ciphers(1) man page from the openssl
127package for a list of all available options.
128
3a433e9b 129Additionally, you can set the client to choose the cipher used in
54de4e32
SI
130`/etc/default/pveproxy` (default is the first cipher in the list available to
131both client and `pveproxy`):
132
133 HONOR_CIPHER_ORDER=0
134
eb641429 135
e683b1d8
FG
136Supported TLS versions
137----------------------
138
139The insecure SSL versions 2 and 3 are unconditionally disabled for pveproxy.
140TLS versions below 1.1 are disabled by default on recent OpenSSL versions,
141which is honored by `pveproxy` (see `/etc/ssl/openssl.cnf`).
142
143To disable TLS version 1.2 or 1.3, set the following in `/etc/default/pveproxy`:
144
145 DISABLE_TLS_1_2=1
146
147or, respectively:
148
149 DISABLE_TLS_1_3=1
150
151NOTE: Unless there is a specific reason to do so, it is not recommended to
152manually adjust the supported TLS versions.
153
154
eb641429
DM
155Diffie-Hellman Parameters
156-------------------------
157
158You can define the used Diffie-Hellman parameters in
8c1189b6 159`/etc/default/pveproxy` by setting `DHPARAMS` to the path of a file
eb641429
DM
160containing DH parameters in PEM format, for example
161
162 DHPARAMS="/path/to/dhparams.pem"
163
8c1189b6 164If this option is not set, the built-in `skip2048` parameters will be
eb641429
DM
165used.
166
167NOTE: DH parameters are only used if a cipher suite utilizing the DH key
168exchange algorithm is negotiated.
169
203262f4 170[[pveproxy_custom_tls_cert]]
98a741e0
FG
171Alternative HTTPS certificate
172-----------------------------
173
0e9c6c13 174You can change the certificate used to an external one or to one obtained via
aeecd9ea
SI
175ACME.
176
177pveproxy uses `/etc/pve/local/pveproxy-ssl.pem` and
178`/etc/pve/local/pveproxy-ssl.key`, if present, and falls back to
179`/etc/pve/local/pve-ssl.pem` and `/etc/pve/local/pve-ssl.key`.
180The private key may not use a passphrase.
181
020f5d32
FG
182It is possible to override the location of the certificate private key
183`/etc/pve/local/pveproxy-ssl.key` by setting `TLS_KEY_FILE` in
184`/etc/default/pveproxy`, for example:
e683b1d8
FG
185
186 TLS_KEY_FILE="/secrets/pveproxy.key"
187
188NOTE: The included ACME integration does not honor this setting.
189
aeecd9ea 190See the Host System Administration chapter of the documentation for details.
9b75a03a 191
203262f4
TL
192[[pveproxy_response_compression]]
193Response Compression
194--------------------
54de4e32
SI
195
196By default `pveproxy` uses gzip HTTP-level compression for compressible
197content, if the client supports it. This can disabled in `/etc/default/pveproxy`
198
199 COMPRESSION=0
200
96f2beeb
DM
201ifdef::manvolnum[]
202include::pve-copyright.adoc[]
203endif::manvolnum[]